筆者近期正在使用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>
好了,就先到這里了。以后有新的話再補充:>