我试图了解是否有一种最简单和最短的方式来填充表单的字段,在它没有通过验证并重定向之后(遵循描述here的模式)。在struts 2中重定向后填充字段
我有一个从addPerson.action动作调用的表单,并且提交动作是savePerson.action。 如果验证失败,我重定向传递所有参数,以便重定向页面将填充用户插入数据的字段,避免用户从头开始麻烦。 这种解决方案的问题是,我必须列出表格的每一个参数,在struts.xml中,像下面的例子:
<action name="savePerson" class="personAction" method="savePerson">
<interceptor-ref name="store">
<param name="operationMode">STORE</param>
</interceptor-ref>
<interceptor-ref name="myStack" />
<result name="success" type="redirectAction">
<param name="actionName">listPeople</param>
</result>
<result name="input" type="redirectAction">
<param name="actionName">addPerson</param>
<param name="parse">true</param>
<param name="person.name">${person.name}</param>
<param name="person.surname">${person.surname}</param>
<param name="person.gender">${person.gender}</param>
<param name="person.email">${person.email}</param>
<param name="person.mobile">${person.mobile}</param>
</result>
</action>
<action name="addPerson" class="personAction" method="addPerson">
<interceptor-ref name="store">
<param name="operationMode">RETRIEVE</param>
</interceptor-ref>
<interceptor-ref name="myStack" />
<result name="success">/person/add.jsp</result>
<result name="input">/person/add.jsp</result>
</action>
我不得不使用MessageStoreInterceptor,以保存和检索来自重定向的验证错误消息。
我已经使用ajax验证,但我希望使我的页面也以非JavaScript模式工作。上面的代码一切正常,但看起来很奇怪,我必须在结果标记中列出所有参数。
有没有更好更短的做法呢? 谢谢
只是好奇......你在'addPerson'方法中做什么,你需要在验证失败时重定向到它?因为通常情况下,我会通过'savePerson'动作产生'/person/add.jsp ',这样就足够了。 –
nmc
但是,如果在验证失败后点击刷新,浏览器会询问您是否要重新提交表单,这是[此处]描述的问题之一(http://www.theserverside.com/news/1365146/Redirect-After- Post) –
nmc是正确的。验证失败后不要重定向。重定向后模式用于后续页面,而不是重新显示输入页面以纠正验证错误。验证成功并重新处理表单后重定向。 –