2

我正在将一个项目从 struts 1.3 迁移到 struts 2.0。现在我已经阅读了网络上提供的各种资源,但在 struts 2.0 中找不到 struts 1.3reset()形式的替代方法。

我的动作类扩展ActionSupport并实现了Modeldriven. 我已经在动作类中实现了 validate 方法,并且效果很好。但是,当表单没有错误并且提交正确完成时,页面会重新加载初始值。

我希望我会收到一张空白表格。我寻找了一种reset()表单方法,但找不到。目前,我明确地将所有表单值设置为空白。我不认为这是一个好的编程习惯。请建议如何在 struts 2.0 中实现表单 reset()。

4

2 回答 2

1

编辑:好的,您正在使用 Tiles(我从未使用过),那么我将尝试另一种解决方案:

如果您有一个空的 JSP 磁贴,并且在用户编译了它的字段并提交了表单之后,您希望始终清除这些字段......那么在操作中仅声明 SETTERS 而不是 GETTERS 怎么样?

您只能从 JSP 设置到 Action,但不能从 JSP 中读取它们......那么您的字段在页面中将始终为空,并且始终由 Action 中的 setter 重写。


如果我明白了,你在 JSP 上,你调用 Action(或另一个动作)的方法 saveStuff(),然后你回到页面......

在这种情况下,您可以使用 RedirectAction 返回类型,它将从请求中删除所有参数,并将您的请求重定向到 Action 的 execute() 方法。

所以,而不是

<action name="myAction" class="com.blabla.myAction">
        <result name="success">/myPage.jsp</result>
</action>

做就是了

<action name="myAction" class="com.blabla.myAction">
      <result name="success">/myPage.jsp</result>
      <result name="stuffSaved" type="redirectAction">
          <param name="actionName">myAction</param>
      </result>
</action>

这样您就可以重新进入初始状态(假设您没有在会话中放置任何由 JSP 读取的内容)。

于 2012-11-06T08:57:28.343 回答
0

因为您ActionForm在 Struts2 中属于同一个类,所以您必须实现自己的reset()方法来清除您想要的任何数据。

于 2012-11-06T06:49:34.630 回答