Spring MVC一种形式将数据提供给另一种形式

时间:2010-07-02 18:46:30

标签: java spring-mvc

我的首要问题是此错误消息:

  

访问/segment.htm时出现问题。   原因是:

Neither BindingResult nor plain target object for bean name
     

'acceptCorrected'可根据要求提供   属性

我正在处理的最高层描述是:

Form1请求用户提供一些输入。当form1提交时,我需要通过一些处理推送该数据,然后呈现包含处理结果的form2。我试图通过form1的控制器onSubmit返回的模型将form1的结果传递给form2。

reason相信这是禁止的。

但是,如果是的话,在渲染form2的JSP页面时如何让数据from1可用?

<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 个答案:

答案 0 :(得分:1)

  

第一个表单的onSubmit返回指向第二个表单的ModelAndView,方法是命名与第二个表单的formView相同的视图。

你能进一步解释这意味着什么吗? “细分”视图是否呈现包含<form> POST到/showSegmented.htm的HTML?

formBackingObject()仅在对页面的初始GET请求时调用。

您希望/segmented.htm显示表单吗?/showSegmented.htm来处理输入值?

如果是这样,这实际上不是AbstractFormController的预期用途。此类适用于您希望相同的控制器处理的情况1)表单的表示和2)处理它的提交。

答案 1 :(得分:0)

几个小时的混乱似乎给我留下了答案。我不确定它是否完美,但它可能对其他人有所帮助。有很多人在这个问题的顶部有错误信息而感到沮丧。

在Spring 2.5.6中,有一个错误或一个奇怪的限制,如下所示。如果SimpleFormController指定另一个带有SimpleFormController的页面作为其successView,则第二个将在问题中失败。来自第一种形式的帖子数据似乎会干扰第二种形式上发生的事情。似乎假设提交表单后的下一个视图始终是非形式的。

如果第一页使用RedirectView切换到第二页,一切都很顺利。

有许多相互矛盾的建议,在某些情况下,来自Spring论坛上相互冲突的重量级人物,就此而言。我所知道的是,我通过切换到重定向使问题中的错误消失了。现在,浏览器为successView执行页面的简单GET,并且模型设置正确,一切正常。

请注意,RedirectView的参数是“外部”URL(在教程中,类似于blah.htm),而不是映射器映射到JSP页面的简单标记。