我正在将项目从struts 1.3迁移到struts 2.0。现在我已经阅读了网上提供的各种资源,但在struts 2.0中找不到struts 1.3 reset()
表单方法替代方法。
我的操作类扩展了ActionSupport
并实现了Modeldriven
。我已经在动作类中实现了validate方法,并且完美无缺。但是,当表单没有错误并且提交正确完成时,页面将重新加载初始值。
我预计我会收到一张空白表格。我找了一个reset()
表单方法,但没找到。目前,我明确将所有表单值设置为空白。我不认为这是一个很好的编程习惯。请建议如何在struts 2.0中实现表单reset()。
答案 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)
由于您的Action
和Form
属于Struts2中的同一个类,因此您必须实施自己的reset()
方法来清除您想要的任何数据。