Struts2的校驗框架是自己基於XML的,它是針對於每一個Action的java
1.字段校驗app
(1)在須要校驗的RegisterAction.java的同一個包下面建立RegisterAction-validation.xml框架
即(*-validation.xml),引入dtdjsp
<!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN"ide
"http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">即在struts下載的源碼ui
包中的struts-2.1.8.1-all\apps\struts2-mailreader-2.1.8.1\WEB-INF\classes\mailreader2firefox
\Subscription-validation.xml中粘貼便可。orm
(2)用firefox打開上面連接xml
(3)校驗框架的xml文件的根元素爲<field-validator type="stringlength"></field-validator>對象
其中type的值請參照xwork*.jar\com.opensymphony.xwork2.validator.validators\default.xml
(4)校驗信息添加到fielderror級
(5)RegisterAction-validation.xml中具體配置以下:
<field name="username">
<field-validator type="requiredstring" short-circuit="false">
<param name="trim">true</param>
<message>username should not be blank!</message>
</field-validator>
<field-validator type="stringlength">
<param name="trim">true</param>
<param name="minLength">6</param>
<param name="maxLength">10</param>
<message>username should be between ${minLength} and ${maxLength}</message>
</field-validator>
</field>
其中,<field-validator>標籤中的short-circuit表示短路,當short-circuit=「true」時,若是
本次校驗不經過,下面的校驗不會進行。
2.非字段校驗
在RegisterAction-validation.xml中配置代碼以下:
<validator type="requiredstring">
<param name="fieldName">username</param>
<message>username should not be blank!</message>
</validator>
<validator type="stringlength">
<param name="fieldName">username</param>
<param name="minLength">6</param>
<param name="maxLength">10</param>
<message>username should be between ${minLength} and ${maxLength}</message>
</validator>
注意:字段校驗與非字段校驗的區別:
字段校驗注重的是「我去校驗誰,用什麼來校驗」;
非字段校驗注重的是「我用什麼來校驗,我去校驗誰」;
3.當在struts.xml中調用action中的某一個方法時,咱們能夠在struts.xml中配置以下:
<action name="register" class="com.test.action.RegisterAction" method="abc">
<result name="success">/success.jsp</result>
<result name="input">/register2.jsp</result>
</action>
若是要對輸入的內容進行校驗,咱們能夠在RegisterAction.java的同一個包下建立
RegisterAction-abc-validation.xml
注意:若是RegisterAction-abc-validation.xml與RegisterAction-validation.xml同時都存在,
那麼,在調用abc()方法時,兩個配置文件中的校驗都會被執行。
4.Struts2一樣支持客戶端校驗
(1)<s:form>標籤的主題(theme)屬性必定不能設置爲simple
(2)<s:form>標籤的validate屬性設置爲true
最好不要使用Struts2給咱們提供的客戶端校驗方式
總結:
(1)真正存放filed級別錯誤信息的對象是LinkedHashMap
(2)該LinkedHashMap的key是String類型的,value是ArrayList類型的
(3)對於Action級別的錯誤信息,其實是放置在ArrayList中的