Struts2校驗框架

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中的

相關文章
相關標籤/搜索