Spring MVC одна форма подачи данных в другую форму - PullRequest
0 голосов
/ 02 июля 2010

Моя начальная проблема - это сообщение об ошибке:

Проблема с доступом к /segment.htm. Причина:

Neither BindingResult nor plain target object for bean name

'acceptCorrected' доступно как запрос атрибут

Описание того, над чем я работаю, это:

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

Есть причина полагать, что это верботен.

Но, если это так, как мне получить данные из 1, чтобы они были доступны при визуализации страницы JSP для формы 2?

<bean name="/segment.htm" class="com.basistech.rseharvest.SegmentFormController">
  <property name="sessionForm" value="true"/>
  <property name="commandName" value="segment"/>
  <property name="commandClass" value="com.basistech.rseharvest.Segment"/>
  <property name="validator">
   <bean class="com.basistech.rseharvest.SegmentValidator"/>
  </property>
  <property name="formView" value="segment"/>
  <property name="successView" value="showSegmented"/>
  <property name="segmenter" ref="segmenter"/>
 </bean>

 <!--  the page to enter text -->
 <bean name="/showSegmented.htm" class="com.basistech.rseharvest.AcceptCorrectedFormController">
  <property name="sessionForm" value="true"/>
  <property name="commandName" value="acceptCorrected"/>
  <property name="commandClass" value="com.basistech.rseharvest.AcceptCorrected"/>
  <property name="validator">
   <bean class="com.basistech.rseharvest.CorrectionsValidator"/>
  </property>
  <property name="formView" value="showSegmented"/>
  <property name="successView" value="segment"/>
  <property name="data" ref="data"/>
 </bean>

Ответы [ 2 ]

1 голос
/ 02 июля 2010

onSubmit первой формы возвращает ModelAndView, указывающий на вторую форму, называя то же представление, которое вы видите как formView второй формы.

Можете ли вы объяснитьнемного дальше, что это значит?Является ли представление «сегмента» отображением HTML, который содержит <form>, который отправляет /showSegmented.htm?

formBackingObject() вызывается только при первоначальном GET запросе к странице.

Вы хотите, чтобы /segmented.htm отображал форму, а /showSegmented.htm обрабатывал входные значения?

Если это так, то это на самом деле не означает использование AbstractFormController.Этот класс предназначен для использования в ситуациях, когда вы хотите, чтобы тот же контроллер обрабатывал 1) представление формы и 2) обработку ее представления.

0 голосов
/ 03 июля 2010

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

В Spring 2.5.6 есть либо ошибка, либо странное ограничение, как показано ниже. Если SimpleFormController задает в качестве своего successView другую страницу с SimpleFormController, вторая будет неуспешной, как в вопросе. Почтовые данные из первой формы, кажется, мешают тому, что происходит во второй форме. Кажется, есть предположение, что следующее представление после отправки формы всегда не является формой.

Если первая страница использует RedirectView для передачи на вторую страницу, все хорошо.

Есть много противоречивых советов, в некоторых случаях поступающих от конфликтующих заговорщиков на весенних форумах, по этому поводу. Все, что я знаю, я сделал ошибку, отправленную в вопросе, ушел, переключаясь на перенаправление. Теперь браузер выполняет обычное GET-отображение страницы для successView, и модель настроена правильно, и все в порядке.

Обратите внимание, что аргументом RedirectView является «внешний» URL-адрес (в учебнике, что-то вроде blah.htm), а не простой токен, который преобразователь отображает на страницы JSP.

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