Spring MVC的一种形式供给数据为另一种形式
我的出发问题是这样的错误消息:Spring MVC的一种形式供给数据为另一种形式
问题访问/segment.htm。 原因:
Neither BindingResult nor plain target object for bean name
“acceptCorrected”可以作为要求 属性
什么我工作的顶层描述是这样的:
Form1中征求用户的某些输入。当form1提交时,我需要通过一些处理来推送数据,然后呈现包含处理结果的form2。我试图通过form1的控制器的onSubmit返回的模型来将form1的结果传递给form2。
有reason认为这是禁忌。
但是,如果是这样,在为form2呈现JSP页面时,如何从1获得数据以供使用?
<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>
搞乱小时候似乎给我留下了一个答案。我不确定它是否完美,但它可能会帮助其他人。有很多人在这个问题的顶部出现了错误消息。
在Spring 2.5.6中,有一个bug或一个奇怪的限制,如下所示。如果SimpleFormController使用SimpleFormController指定另一个页面作为其successView,则第二个页面将在问题中失败。第一种形式的发布数据似乎会干扰第二种形式发生的情况。似乎有一种假设,表单提交后的下一个视图始终是非形式的。
如果第一页使用RedirectView切换到第二页,则一切正常。
有许多相互矛盾的建议,在某些情况下来自春季论坛上的冲突重击者,关于这一点。我所知道的是,我通过切换到重定向而使问题中发布的错误消失。现在,浏览器为successView创建页面的简单GET,并且该模型正确设置,并且一切正常。
请注意,RedirectView的参数是'outside'URL(在本教程中,类似blah.htm),而不是映射器映射到JSP页面的简单标记。
第一形式的的onSubmit返回指向第二形式一个ModelAndView,通过命名相同的视图,你看到作为第二形式的FormView的。
你能再解释一下这是什么意思吗? “细分”视图是否呈现包含<form>
的HTML的HTML,该HTML会POST到/showSegmented.htm
?
formBackingObject()
仅在最初的GET
请求页面上调用。
是否要/segmented.htm
显示表格和/showSegmented.htm
以处理输入值的处理?
如果是这样,那么这不是AbstractFormController
的预期用法。本课程旨在用于您希望使用相同控制器来处理1)表单呈现和2)处理它的提交。
我想我正在试图做你告诉我的是正确的事情。 对于form1,我有一个JSP页面和一个控制器。 form1指定,作为其successView,form2。因此,一个控制器正在处理呈现form1并处理form1的提交。 我的问题是,我想使用form1的结果来帮助渲染form2。我认为这个模型将是正确的沟通途径,但没有这样的运气。 (请参阅http://forum.springsource.org/showthread.php?p=290500&mode=threaded#post290500)。 – bmargulies 2010-07-02 21:13:41
虽然我很困惑,因为您似乎在上面的代码示例中张贴了两个表单控制器。当使用AbstractFormController(及其子类)时,我相信预期的用法是表单呈现(GET)和处理提交(POST)都使用相同的控制器实例(和URL映射)。换句话说,您只需要一个控制器映射和一个URL。 –
2010-07-03 14:31:10
您是否看过“开发Spring Framework MVC应用程序的分步指南”教程?看起来不像它已经更新为3.0,但它是一个很好的起始资源http://static.springsource.org/docs/Spring-MVC-step-by-step/表单控制器上的部分可能会有所帮助http:// static.springsource.org/docs/Spring-MVC-step-by-step/part4.html#step4.6 – 2010-07-03 14:34:46