| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java EE (J2EE) и Spring > Формы в Struts |
| Автор: Akeem 18.11.2009, 10:05 |
| У меня на странице в один момент времени находиться только одна форма. Страница обрабатывается одним контроллером (нужно ли так делать?). Как мне "обьяснить" Struts что щас на странице находиться одна форма, а в другой момент будет находится другая форма? Пример: 1) форма регистрации 2) форма отсылки фидбека. Формы находятся в одном месте страницы, весь остальной контент страницы не меняется, только часть логин или фидбек Это конфигурируется в struts-config.xml либо на уровне вешания двух контроллеров на две формы. Юзаю Struts 1.3 Спасибо! |
| Автор: carper 18.11.2009, 11:23 |
| Я так и не понял, что надо объяснять STRUTS. На странице можете размещать сколько угодно форм, например, воспользовавшись тэгом s:if, чтобы показывать нужную. Также можете привязывать к этой странице множество actions, или одну, или одну с разными методами (см. атрибут method в struts.xml). Я лично, за исключением вырожденных случаев, когда, например, форма регистрации отличается от формы логина одним - двумя полями, стараюсь избегать условных операторов в jsp, отвечающих за вывод того либо другого визуального элемента, т.к. плохо читается код и вообще ... P.S. А варианты с одинаковым заголовком и футером лучше решаются через тэги include и т.п. |
| Автор: Akeem 18.11.2009, 13:42 | ||
| у меня не jsp а Velocity, хотя это не меняет ничего. carper, когда загружается страница, то на этой странице находится форма логина (другая вообще не рендерится). Если пользователь залогинен, то форма логина исчезает и появляется другая форма. и эти формы очень сильно отличаются. У меня в конфиге прописано вот такие три строчки.
в итоге я получаю что у меня распознается форма feedbackform вместо loginform Можно поподробнее про атрибут method, а то не совсем понятно как им пользоватся. |
| Автор: carper 18.11.2009, 16:58 | ||||||||
Значится так (пишу сразу здесь, извиняйте за опечатки в коде), вот один из способов с двумя формами и про атрибут method:
Это в struts.xml
Ниже, код той формы из которой вы обращаетесь к action:
Ну про то как включать стандартные заголовки в странички, думаю и так ясно. Сразу же отвечаю на 2-ой вопрос, а как быть если страничку все же хочется иметь одну? Аналогично, только убираем ${login} из <result name="input">${login}</result> , зато анализируем login (тогда лучше его сделать boolean) в тэге s:if
Вообще, вариантов может быть куча, но поскольку логически ваши формы занимаются разными вещами, я бы не рекомендовал маппить их на одну страничку. |
| Автор: Akeem 23.11.2009, 17:37 |
| Проблему решил изменением логики. Если мне нужно чтобы пользователь был залогинен, то я ласково прошу пользователя перейти на страницу логина и оттуда после авторизации возвращаю страницу обратно. |