Struts 2 中验证后清除参数

问题描述 投票:0回答:1

我有一个

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中?

java jsp parameters struts2 struts
1个回答
1
投票

我的猜测是,您的表单操作属性在 URL 中没有参数,并且方法是

post
。当您提交表单时,您没有在 URL 中指定任何参数。在大多数情况下,当您执行
post
请求时,您不想在 URL 中使用参数,因此您可以使用
hidden
字段和参数名称。表单提交后,您可以像获取其他请求参数一样获取该参数。此参数不会与 URL 一起传递,而是在请求正文中传递,因此检索参数的请求方法可以工作,并且 struts 可以将此参数填充到操作 bean(如果它具有公共 setter)。

<s:form action="deliverable" method="post">
  <s:hidden name="id" value="123"/>
  ...
</s:form> 
© www.soinside.com 2019 - 2024. All rights reserved.