Struts 2缺少重置方法?

时间:2012-11-06 06:45:44

标签: forms struts2 validation reset struts1

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

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

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

2 个答案:

答案 0 :(得分:1)

编辑:好的,你正在使用Tiles(我从未使用过),然后我会尝试另一种解决方案:

如果你有一个空的JSP磁贴,并且在用户编译了它的字段并提交了表单之后,你想要总是清除那些字段......那么在Action中只声明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读取的会话中)。

答案 1 :(得分:0)

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