我有一个
URL="deliverable.do?id=123"
点击提交按钮后,进入
validate()
方法并找到一些缺失的字段。
然后,当它返回显示问题时(这正是我所期望的),新的 URL 将在不带参数的情况下显示
URL="deliverable.do"
顺便说一句,我无法进行重定向,因为如果我这样做,我将丢失以前在表单中输入的信息。
<action name="deliverable" class="DeliverableAction">
<result name="input">/WEB-INF/deliverable.ftl</result>
<result name="success" type="redirectAction">
<param name="actionName">deliverable</param>
<param name="id">${deliverable.id}</param>
</result>
</action>
我知道如果出现问题,
validation()
方法将返回INPUT
结果,但是,有没有办法将参数保留在URL中?
我的猜测是,您的表单操作属性在 URL 中没有参数,并且方法是
post
。当您提交表单时,您没有在 URL 中指定任何参数。在大多数情况下,当您执行 post
请求时,您不想在 URL 中使用参数,因此您可以使用 hidden
字段和参数名称。表单提交后,您可以像获取其他请求参数一样获取该参数。此参数不会与 URL 一起传递,而是在请求正文中传递,因此检索参数的请求方法可以工作,并且 struts 可以将此参数填充到操作 bean(如果它具有公共 setter)。
<s:form action="deliverable" method="post">
<s:hidden name="id" value="123"/>
...
</s:form>