![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
Pawl |
|
||||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 649 Регистрация: 22.4.2008 Где: Витебск Репутация: 3 Всего: 28 |
Доброго времени суток!
Сейчас ковыряю Struts, и возник следующий вопрос: есть приложение при запуске которого в браузере загружается логин-форма, куда вводятся данные (ФИО, пол и др.), далее после нажатия кнопки на форме эти данные попадают в Action, который их перенаправляет для хранения в БД, а в браузере загружается следующая форма (страничка, где написано, что данные внесены). На этой форме я сделал ссылку
по которой переходим к логин-форме. Я хочу сделать для этого вместо ссылки кнопку (типа html:submit). Можно ли это сделать? Надо ли для этого создавать еще один Action или не обязательно? Использую встроеный в NetBeans Struts (1.3.8). Вот как выглядит мой struts-config:
Вот логин-форма (login.jsp):
вот форма с информацией о результатах добавления в БД (main.jsp):
А вот - фрагмент Action-a:
-------------------- В действительности всё совсем не так, как на самом деле |
||||||||||
|
|||||||||||
Telperion |
|
||||||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 12.10.2008 Репутация: 1 Всего: 1 |
если первая страница появляется как велком пейдж, то на main.jsp можно вместо login.do использовать адресс самого приложения....
Но это частный случай... поэтому нужно или добавлять новый экшен, который просто-напросто вернет нужную страничку Я бы предложил отнаследовать ваши экшены от некого BaseAction. У этого класса метод execute() смотрит некий параметр в реквесте, и в зависимости от его значения выполняет один из методов, которые переопределяются в наследниках.
а ваш экшен преобразовать
ну добавить джаваскриптом нужный параметр в реквест при сабмите регистрационной формы я заметил уже в коде попытки передавать тип экшена в параметрах реквеста.... но это кажется не то о чем я говорил ))) |
||||||
|
|||||||
Pawl |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 649 Регистрация: 22.4.2008 Где: Витебск Репутация: 3 Всего: 28 |
Telperion, спасибо за то, что обновили мою тему
![]()
нет, тут у меня как раз login.jsp - это welcom page. Вот так странно ![]()
Если можно, примерчик, а то слово "попытки" наводят на мысль, что я дклал что-то неправильно ![]() -------------------- В действительности всё совсем не так, как на самом деле |
||||||
|
|||||||
Telperion |
|
||||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 12.10.2008 Репутация: 1 Всего: 1 |
Pawl,
мне нужно денек, чтобы выдрать конкретные примеры и систематизировать их. а про ваш конкретный случай я как раз и писал. когда вы в браузер вводите http://localhost:port/WebApp идет редирект на http://localhost:port/WebApp/login.jsp поэтому вместо
можно написать чтото вроде
но это очень коряво и за такое надают по рукам )))) |
||||
|
|||||
Pawl |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 649 Регистрация: 22.4.2008 Где: Витебск Репутация: 3 Всего: 28 |
Был бы крайне признателен!
Этот код работает у меня БЕЗ ПРОБЛЕМ - редиректит куда надо. Я хочу осуществить такой же редирект с помощью кнопки <html:submit/> -------------------- В действительности всё совсем не так, как на самом деле |
||||||
|
|||||||
Telperion |
|
||||||||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 12.10.2008 Репутация: 1 Всего: 1 |
итак к тому что я написал добавить следующее....
на страничке в форму поместить
кнопки можно заменить
вобщем примерно так выглядит скелет. Очень подходит для приложений где странички идут одна за другой в основном... и на страницах есть несколько однотипных по сути действий (next back update add) и их нужно обработать... ИТОГО. 1 пишем родительский экшн, который из сессии достаёт параметр с условным именем ('cmd') и в зависимости от его значения вызывает один из предопределенных методов. 2 для каждой страницы наследуемся от этого экшена и переопределяем нужные нам экшены 3 на страничках добавляем в форму скрытое поле, и все сабмиты договариваемся делать через джаваскриптовую функцию, которая получает некое кодовое название действия и присваивая значение скрытому полю, обеспечивает наличие нужного параметра ('cmd') в реквесте собственно все. Такой подход имеет своих критиков... но как бы они не критиковали, ключевое слово имеет (он их ![]() как это работает в вашем случае
http://hst:port/app/login.do будет редиректнуто на соответствующий экшен... поскольку в реквесте ничего нет сработает метод по умолчанию onRequest (предполагаем что BaseAction написали правильно) в этом методе можно при необходимости выполнить какуюто инициализацию... на логин пейдже мы вводим что нужно и нажимаем на линк сабмита. там срабатывает джаваскрипт который сетает в скрытое поле "смд" значение 'submit' и отправляет сабмит по адресу ... /login.do BaseAction понимает что нужно вызвать метод onSubmit() в этом методе вы делаете всю вашу логику по сохранению в базу и возвращает уже не "sucsess" a "submit" на что Struts делает редирект на main.do там в свою очередь срабатывает метод onRequest() в котором вы по прежнему можете сделать какието предварительные действия(или просто сразу вернуть "success") а дальше по анолодгии.... или кнопка которая вызовет onclick="clickSubmit('back') которая вернет назад сделав при необходимости некоторые действия.... или какието новые экшены ))) Надеюсь общая суть понятна. При этом в джаваскрипт можно добавить валидацию форм, в BaseAction проверку разрешения доступа для юзеров.. и. т.д... получается довольно мощная и гибкая система... возможно требует некоторого осмысления и привычки.... но при большом проекте в итоге экономит много времени ))) В приципе детали можно осудить в личке ))) или по скайпу ) |
||||||||
|
|||||||||
Pawl |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 649 Регистрация: 22.4.2008 Где: Витебск Репутация: 3 Всего: 28 |
Спасибо, что так основательно подходите к моей проблеме
![]() Дело в том, что осмысливать struts я стал, можно сказать, на днях, и свое приложение собирал по готовым примерам. Поэтому struts для меня действительно ![]() По моему приложению: я его сюда приложил, и может Вы могли бы его посмотреть и изменить, что нужно? На самом деле, мне было бы так гораздо удобнее! Так сказать, нарастить "мышцы теории на скелет практики"! Огромное спасибо заранее! З. Ы. В принципе, я планирую заниматься Web-проектами на java достаточно серьезно, и думаю, еще воспользуюсь Вашим предложением: ![]() Присоединённый файл ( Кол-во скачиваний: 2 ) ![]() -------------------- В действительности всё совсем не так, как на самом деле |
|||
|
||||
Pawl |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 649 Регистрация: 22.4.2008 Где: Витебск Репутация: 3 Всего: 28 |
СДЕЛАЛ!
![]() ![]() Я повесил 2 страницы на одну форму и - О ЧУДО - все получилось! -------------------- В действительности всё совсем не так, как на самом деле |
|||
|
||||
Telperion |
|
|||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 12.10.2008 Репутация: 1 Всего: 1 |
На одну форму или экшен ? Не уверн что это очень уж хорошо )
|
|||
|
||||
Pawl |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 649 Регистрация: 22.4.2008 Где: Витебск Репутация: 3 Всего: 28 |
Именно на одну форму. А экшена у меня в struts-config'e прописано 2, но фактически работает с ними только 1 класс. По-моему, ниче-так получилось - коротко и ясно! ![]() -------------------- В действительности всё совсем не так, как на самом деле |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |