struts2驗證

Struts2 驗證

數據 - 業務處理之前 - 合法性驗證

註冊表單    類型         驗證規則
username - varchar2(50)  not null / 6<x<20


1.客戶端驗證 (js)
2.服務器端驗證
  a.編碼驗證 (execute() / validate() / validateExecute())
    缺點:驗證代碼與業務代碼混合在一起,不同的字段驗證沒有分開,不利用重用,
  b.驗證框架 (ActionName-validation.xml)
 
 
<interceptor-ref name="defaultStack">
        <!-- 排除 Action中 list 方法,不需要驗證 -->
        <param name="validation.excludeMethods">list</param>
        
        <!-- Action中包含 add /modify 需要驗證 -->
        <!-- <param name="validation.includeMethods">add,modify</param>-->
      </interceptor-ref>



 

Struts2 驗證框架 validation.xml 常用的驗證規則
2009-11-04 10:51
validation.xml 的命名規則和放置路徑:

文件名:<ActionClassName>-validation.xml

<ActionClassName>就是要驗證的Action類的名字。
要將此文件放於Class文件相同的目錄。

如果在Action類在struts配置中有多個action實例(action name),那麼對應某個action的驗證文件名規則如下:

文件名:<ActionClassName>-<aliasName>-validation.xml

例如:UserAction-login-validation.xml

(注意:上面的<aliasName>並不是method name,而是struts.xml中配置的action的name)


validation.xml 的內容示例:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN"
"http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
<validators>

<field name="username">

<field-validator type="requiredstring">
<param name="trim">true</param>
<message>%{getText("validation.username.length")}</message>
</field-validator>

<field-validator type="stringlength">  
<param name="minLength">4</param>
<param name="maxLength">32</param>  
<message>用戶名長度應在${minLength}到${maxLength}個字符間</message>  
</field-validator>

</field>



<field name="password">

<field-validator type="requiredstring">
<message>請填寫密碼</message>
</field-validator>

<field-validator type="stringlength">  
<param name="minLength">6</param>
<param name="maxLength">32</param>  
<message>爲了您賬號的安全,請設置6個字母以上的密碼(最長可設置32個字母)</message>  
</field-validator>

</field>

<field name="rePassword">
    <field-validator type="requiredstring">
      <param name="trim">true</param>
      <message>重複密碼不能爲空</message>
    </field-validator>

    <field-validator type="stringlength">
      <param name="minLength">6</param>
      <param name="maxLength">8</param>
      <message>重複密碼的長度需在 ${minLength} 和 ${maxLength} 之間</message>
    </field-validator>
    
    <field-validator type="fieldexpression">
      <param name="expression">rePassword eq user.password</param>
      <!--
        <param name="expression">
          <![CDATA[rePassword.equals(user.password)]]>
        </param>
      -->
      <!--
        <param name="expression">
          <![CDATA[rePassword==user.password]]>
        </param>
      -->
      <message>兩次密碼不一致</message>
    </field-validator>
  </field>


Struts2 的驗證規則大概有以下數種:

required:必填校驗器
requiredstring:必填字符串校驗器
int:整數校驗器
double:雙精度浮點數校驗器
date:日期校驗器
expression:表達式校驗器
fieldexpression:字段表達式校驗器
email:電子郵件校驗器
url:網址校驗器
visitor:Visitor校驗器
conversion:轉換校驗器
stringlength:字符串長度校驗器
regex:正則表達式校驗器


具體的使用方法可以GOOGLE,下面舉例幾種常用的驗證規則:

常用的驗證規則:


1。必填檢驗
<validators>
<field name="username">
 <field-validator type="required">
  <message>指定檢驗失敗的提示信息</message>
 </field-validator>
</field>
</validators>


2。必填字符串檢驗
<validators>
<field name="username">
 <field-validator type="requiredstring">
  <param name="trim">true</param>
  <message>指定檢驗失敗的提示信息</message>
 </field-validator>
</field>
</validators>


3。整數檢驗器/浮點檢驗
<validators>
<field name="age">
 <field-validator type="int">
  <param name="min">1</param>
  <param name="max">150</param>
  <message>年紀必須在1到150之間</message>
 </field-validator>
   </field>
</validators>


4。日期檢驗
<validators>
<field name="birth">
 <field-validator type="date">
  <param name="min">1900-01-01</param>
  <param name="max">2050-02-21</param>
  <message key="birth.range"/>
 </field-validator>
</field>
</validators>


5.字段表達式檢驗器(要求指定字段滿足一個邏輯表達式)
<validators>
 <field name="re_pass">
   <field-validator type="fieldexpression">
    <!--指定邏輯表達式 -->
        <param name="expression"> (pass eq re_pass)</param>
         <message>密碼必須和確認密碼相等</message>
   </field-validator>
 </field>
</validators>


6.郵件地址校驗
<validators>
 <field name="email">
   <field-validator type="email">
         <message>你的電子郵件地址必須是一個有效的電郵地址</message>
   </field-validator>
 </field>
</validators>


7。網址檢驗
<validators>
 <field name="url">
   <field-validator type="url">
         <message>你的主頁地址必須是一個有效的網址</message>
   </field-validator>
 </field>
</validators>

8.字符串長度檢驗
<validators>
<field name="user">
 <field-validator type="stringlength">
  <param name="minlength">4</param>
  <param name="maxlength">20</param>
  <message>你的用戶名長度必須在${minLength}到${maxlength}之間</message>
 </field-validator>
   </field>
</validators>


9.正則表達式檢驗

<validators>
<field name="user">
 <field-validator type="regex">
  <param name="expression_r"><![CDATA[(\w{4,25})]]></param>
  <message>您輸入的用戶名只能是字母和數組,且長度必須在4到25之間</message>
 </field-validator>
   </field>
</validators>
發佈了8 篇原創文章 · 獲贊 1 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章