Spring Advice - отправка формы - PullRequest
0 голосов
/ 18 ноября 2009

У меня серьезные проблемы с кодом, который я написал для Spring, поэтому я решил начать с нуля и попросить совета. Вот мои требования:

  1. При первой загрузке страницы мне нужен список объектов, извлеченных из БД, к которым я могу получить доступ в JSP.
  2. Я использую этот список для заполнения падать.
  3. Когда пользователь выбирает объект из выпадающего Форма ниже заполняется соответствующие данные (все это данные доступны как есть извлекается при первой странице
    загружен)
  4. Пользователь может изменить это данные и отправьте форму. я нуждаюсь сохранить эти данные в БД
  5. The страница должна быть перезагружена и нуждается получить список объектов снова из БД, как они изменили и составили этот список
    доступны для JSP.

Я использовал SimpleFormController и методы referenceData () и onSubmitAction (), но я не уверен, что это лучшее решение. Я думаю, что моя проблема в том, что после завершения onSubmitAction список объектов недоступен в JSP, так как referenceData () не вызывается после завершения onSubmitAction ().

Извините, если это глупый запрос. Я гуглю и ищу учебники в течение 2 дней, и я не могу найти пример, который делает то, что мне нужно.

Итак, мой вопрос: какие методы мне следует применять для удовлетворения этих требований?

Ответы [ 3 ]

1 голос
/ 18 ноября 2009

Старый способ Spring с использованием иерархии классов Controller имеет много недостатков по сравнению с более новым, более гибким способом использования контроллеров на основе аннотаций.

Тем не менее, вы пытались отправить перенаправление после обработки отправки формы? Это решает проблему запроса пользователя, если можно повторно отправить форму, если он перезагрузит страницу.

0 голосов
/ 18 ноября 2009

Это может быть решено несколькими различными способами:

  1. Установите для successView значение, которое будет перенаправлено команде формы, как если бы это был начальный запрос (например, установите параметр или что-то еще)это означает, что форму не следует повторно отправлять)
  2. Установите successView для перенаправления обратно в исходную форму.(например, redirect:/some/url)
  3. Пусть ваша логика отправки формы вызовет метод referenceData для заполнения необходимых вам атрибутов запроса.

1 и 2 имеют преимущество в повторном использовании существующихлогика отображения формы.Кроме того, преимущество 2 состоит в том, что вы избегаете отправки, если пользователь перезагружает страницу после отправки формы один раз.

0 голосов
/ 18 ноября 2009

Меня смущает вопрос о вашем вопросе - вызов onSubmitAction () - используете ли вы код портлета Spring или код сервлета?

Если вы используете код портлета, то вы должны быть в порядке, также переопределяя onSubmitRender () для возврата RedirectView, перенаправляющего пользователя обратно на ту же страницу. Как вы говорите, если вы используете ту же страницу, что и представление по умолчанию, вы не вернетесь к вызову referenceData (); если вы вместо этого перенаправляете своего пользователя на страницу, пользователь проходит весь процесс загрузки страницы, который включает вызов referenceData (). Так что вам просто нужно включить переопределенный onSubmitRender (), который возвращает что-то вроде этого:

return new ModelAndView(new RedirectView(url, true));

Если вы используете код сервлета, onSubmitAction () нет, только onSubmit () - и в конце переопределенного onSubmit () вы сделаете то же, что и выше, возвращая новый RedirectView () на ту же страницу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...