笔者近期正在使用Struts2开发,在这里把个人心得小结一下。
1.重复提交问题。
使用
<s:token />标签。但这并不足够。当一个submit需要花费大量时间的时候(例如CRUD),页面会暂时无法转向,这时如果狂点按钮的话仍然可以进行重复提交。
所以正确的作法应该是前后台都要有所控制:
• 使用
<s:token />
• 使用js控制:
<form onsubmit="this.submit.disabled='true';">
2.在web page中使用for循环的问题。
<s:bean name="org.apache.struts2.util.Counter">
<s:param name="last" value="***" />
<s:iterator>
do sth..
</s:iterator>
</s:bean>
这是一个很好用的bean,但要注意的是参数
last一定要传对。如果设错了的话(比如空值),等待你的将是一个死循环..
PS:其实,在视图层应尽量避免使用循环等复杂逻辑,最好在后台封装好了拿上来直接显示。
3. 数据的页面显示问题。
为保持用户的输入与页面显示的一致,可能要对空格等做特殊处理:
str = str.replaceAll(" "," ");
然后使用标签(注意escape):
<s:property value="***" escape="false" />
还有一种方法就是后台不做任何转换,把原始数据附给js在前台转换。具体哪种方法好就要细细权衡了。
4.自定义interceptor的问题。
Struts2默认每个Action都会自动调用
defaultStack interceptor(def in struts-default.xml)。但如果你自定义了interceptor,
defaultStack将不再被自动调用。
想和页面做交互的话最好还是加上它:
<interceptor-stack name="Test_InterceptorStack">
<interceptor-ref name="Test_Interceptor"/>
<interceptor-ref name="defaultStack"/>
</interceptor-stack>
好了,就先到这里了。以后有新的话再补充:>