Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> springMVC forms, multiple forms on single page 
:(
    Опции темы
skhilkov
Дата 16.12.2008, 08:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 371
Регистрация: 11.4.2006
Где: TOMSK

Репутация: 2
Всего: 7



Здрасте!
Начал изучать спринг webMVC. Все вроде более-менее понятно.. было  smile,  пока не столкнулся со следующей задачей - разместить на одной страничке несколько форм. Например на страничке есть форма логина, форма голоосования.. ну и мало ли чего там может быть... То есть у нас есть страничка index.htm, ее view index.jsp. Если использовать spring forms и SimpleFormController, то возможно обрабатывать нормально только одну форму.  Погуглил, нашел пару решений : 
1) на всей страничке есть одна форма, но с разными сабмит-кнопками.
2) Использовать обычные формы, которые ссылаются на разные урлы, а затем после обработки происходит редирект на index.htm. 

Первое решение показалось мне не очень правильным... корявым чтоли... ведь у меня одна форма может использоваться на 100 страничках, а при этом подходе мне грозит мнооого копипаста ))

Второе решение в принципе показалось правильным. Есть момент, который надо разрулить но все же можно: 
одна форма на 100 страничках. В этом случае мне нужно запоминать страничку, на которую надо редиректить(то есть если я находился на странице somepage.htm и залогинился, то контроллер меня должен перенаправить на страничку somepage.htm) Как вариант это дело можно хранить в модели. Кстати правильным ли будет такой подход: держать модель(map) в сессии или контексте, а в контроллерах ее модифицировать?

Ну а еще самое главное что меня гложет - это то что я что-то не так понял )) Ведь ситуация достаточно распространенная.... Не могли же разработчики Spring не подумать о таких вещах....  Поэтому пожалуйста, все замечания/советы/вопросы/предложения/дискуссии/обсуждения оооочень приветствуются!


--------------------
Кто понял жизнь, тот не спешит. 
PM MAIL   Вверх
Samotnik
Дата 16.12.2008, 11:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 5
Всего: 191



если говорить про сами формочки, то можно написать шаблоничк .ftl который, потом подгружать, когда необходимо и куда необходимо. 
И первое решение тоже правильно, допустим есть 3-4 формы на странице - и их можно сабмитить, никаких сложностей не должно возникнуть. 
А вот второй способ, мне как раз и не нравиться, это не эффективно, делать редиректы.  Вид должен быть классический : Страничка -  сабмит - данный улетели на сервер.   smile 
Почитайте про шаблоны и динамическую подгрузку. Тогда не придется много копипастить. Будет один всего навсего шаблон, который вы сможете подгрузить  smile 
PM MAIL   Вверх
skhilkov
Дата 16.12.2008, 17:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 371
Регистрация: 11.4.2006
Где: TOMSK

Репутация: 2
Всего: 7



Samotnik, 
курю маны спринг. Тут вроде пишут что редиректы - нормальное дело(даже вроде как хорошее дело):
Цитата

It is sometimes desirable to issue an HTTP redirect back to the client, before the view is rendered. This is desirable for example when one controller has been called with POSTed data, and the response is actually a delegation to another controller (for example on a successful form submission). In this case, a normal internal forward will mean the other controller will also see the same POST data, which is potentially problematic if it can confuse it with other expected data. Another reason to do a redirect before displaying the result is that this will eliminate the possibility of the user doing a double submission of form data. The browser will have sent the initial POST, will have seen a redirect back and done a subsequent GET because of that, and thus as far as it is concerned, the current page does not reflect the result of a POST, but rather of a GET, so there is no way the user can accidentally re-POST the same data by doing a refresh. The refresh would just force a GET of the result page, not a resend of the initial POST data.

А вот эта строчка 
Цитата

response is actually a delegation to another controller (for example on a successful form submission)

как раз подходит под описание второго подхода....

Курю дльше ......

ПС Товарищи со знанием спрингМВС, не оставайтесь в стороне, а? ))


--------------------
Кто понял жизнь, тот не спешит. 
PM MAIL   Вверх
check
Дата 16.12.2008, 21:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 610
Регистрация: 3.4.2006

Репутация: 2
Всего: 23



Если несколько форм на странице, то проще всего так
Код

<c:import url="/form1_page.htm"/>
<c:import url="/form2_page.htm"/>



А если одна форма на нескольких страницах,  то WizardFormController.
PM MAIL   Вверх
_sten_
Дата 16.12.2008, 22:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 184
Регистрация: 29.9.2006

Репутация: 3
Всего: 3



Цитата

Кстати правильным ли будет такой подход: держать модель(map) в сессии или контексте, а в контроллерах ее модифицировать?

нет

Почитай о Spring Tiles

--------------------
WARNING: Condition 'to_be || !to_be' is always 'true' !
PM MAIL ICQ   Вверх
skhilkov
Дата 18.12.2008, 12:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 371
Регистрация: 11.4.2006
Где: TOMSK

Репутация: 2
Всего: 7



_sten_,  если я правильно понял, Вы имели ввиду Apache Tiles? Что-то про Spring Tiles я не нашел ничего...(искал не сильно долго, может чего и упустил...).
Итак, если я правильно понял... В общем не хотелось бы еще с другими технологиями заморачиваться.. Хочется сделать все средствами spring MVC... Вопрос на засыпку - это возможно вообще? ))

Добавлено через 2 минуты и 23 секунды
check, то есть в данном случае дернется нужный контроллер, и можно привязывать валидаторы? Хорошая идея!! Сегодня же попробую!!


--------------------
Кто понял жизнь, тот не спешит. 
PM MAIL   Вверх
_sten_
Дата 18.12.2008, 14:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 184
Регистрация: 29.9.2006

Репутация: 3
Всего: 3



В книге Manning Spring in Action 2nd Edition.pdf глава "14.3 Laying out pages with Tiles"  smile 
Имеется ввиду интеграция с Jakarta Tiles
--------------------
WARNING: Condition 'to_be || !to_be' is always 'true' !
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.0441 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.