之前在項目中對於表單字段的驗證,基本都是在action具體方法中,也沒有用到struts的validate,如今進入新公司了,我感受有必要梳理一下前的作法。
這兩天稍有空隙,對struts的驗證框架使用進行了一些嘗試總結,隨後也打算對struts框架的各個方面都作一次比較詳盡的開發級別的總結,方便未來的查看,避免因遺忘而致使的重複無謂的學習,網上有不少這方面資料,但我感受,只有本身總結提煉出來的,纔會理解深入...
struts的驗證能夠有兩種實現方式:
1.利用action名-validate.xml配置的方式。
2.在具體action中重寫validate()方法。
首先看第一種(配置文件)代碼示例:
jsp代碼
javascript
validate.jsp
action代碼:
html
ValidateTestAction.java
struts.xml配置:
java
struts.xml
驗證框架的配置(action類名+validate-xml的文件,放置於com包中,struts2會自動找到它)
express
ValidateTestAction-validation.xml
<!--在struts2中已經實現了不少經常使用驗證,能夠根據須要選用:
apache
再看一下重寫validate方法的代碼實現
先區分一下幾個不一樣的概念:
this.addFieldError("key",message);
一旦不爲空將會跳轉到input,用<s:fielderror/>標籤顯示.能夠指定fieldname(集合中得key)屬性來達到分開顯示指定的驗證信息。
this.addActionError("");
一旦不爲空將會跳轉到input,用<s:actionerror/>標籤顯示.
this.addActionMessage("");
這個只是一個提示信息,在下文頁面中用<s:actionmessage/>展現集合中得所有message。
jsp代碼:
框架
overwritevalidate.jsp
java代碼
jsp
OvenWriteValidateAction.java
struts.xml配置
ide
struts.xml
目前我有疑問的地方但願與有經驗的朋友交流一下:
1.一旦作了validate的驗證。
那麼因此流經這個action類的請求都將經歷一次驗證,而實際上在一個action類中我只有一個方法須要驗證,這就增添了麻煩。
2.利用上文中的第一種方式實現,導致每次進入action以前又多讀取一個xml文檔,這樣會不會致使效率的下降,若是有影響,那麼程度如何。學習