Struts2.0學習筆記 — 輸入校驗(Validation)

一、輸入校驗:register.jsp、register2.jsp、register3.jsp
輸入校驗建立在類型轉換的基礎之上,即先進行類型轉換之後,再進行輸入校驗。

遇到類型轉換錯誤的時候(也就是說不能進行類型轉換),struts2框架自動生成一條錯誤信息,
並且將該錯誤信息放到addFieldError裏面。但也可以自定義顯示的錯誤信息:

全局定義:
 在struts.xml文件<struts>下引入國際化配置文件:
   <constant name="struts.custom.i18n.resources" value="message">
   </constant>
    注:name的值是固定的,"struts.custom.i18n.resources"
     value的值可隨意起,
 並在src根目錄(即calss根目錄下)建message.properties,文件內容:
  xwork.default.invalid.fieldvalue={0} error!!!!

局部定義:
 對哪個Action類進行的類型轉化錯誤,則應把該文件跟此Action類放在同一個包內,且二者的名
稱要一致。
 假如,RegisterAction類的age(int型)屬性類型轉化錯誤(給age一個abc的字符串,則進
行類型轉化時出錯),那麼,此文件名應爲:RegisterAction.properties,,,其內容爲:

 invalid.fieldvalue.age= Age conversion error!!

類型轉換與輸入校驗的流程:

1. 首先Struts2對客戶端傳來的數據進行類型轉換

2. 類型轉換完畢後再進行輸入校驗

3. 如果類型轉換和輸入校驗都沒有錯誤發生,那麼進入execute方法(調用商業邏輯)

注意:如果類型轉換不成功,也同樣要進行輸入校驗

當把一個struts2標籤的主鍵的theme設置成theme="simple"的時候,表示該主鍵不再會有一個struts
給它的錯誤提示。且不在進行排版,需要設計者自己排版,該主鍵的label屬性不再起作用

在struts.xml配置文件裏可以通過method="method"自定義Action類裏的主方法public String method(),
且此時該Action類中的校驗方法爲public void validateMethod()。如果此Action類中存在validate()方法,
則在校驗時,先調用validate()方法,然後再調研自定義的校驗方法validateMethod()。

二、校驗框架:register4.jsp
 
 任何一個Action類均可用xml校驗框架來進行參數屬性值的校驗。xml文件與Action類文件在同一包下,且xml文件
的命名格式跟Action類名有狠大的關係:比如某Action類的名稱爲RegisterAction4。
 如果一個JSP頁面在該RegisterAction4類中的主方法是ececute(),則對該JSP頁面的校驗框架名稱爲RegisterAction4-validation.xml,
即是:類名-validation.xml(Action類全局校驗框架)。
 如果該JSP頁面在RegisterAction4類中對應的主方法不是execute(),而是test()方法(通過<action>的method屬性,
使method="test"得到),則對於該JSP頁面屬性的校驗框架名稱應爲:RegisterAction4-test-validation.xml,
即:類名-主方法名-validation.xml(Action局部校驗框架)。
DeviceCategoryAction-deviceCategoryAddNext-validation.xml
 如果同時提供RegisterAction4-validation.xml和RegisterAction4-test-validation.xml兩個校驗框架的話,
即使JSP頁面對應RegisterAction4的主方法是test(),那麼也要先進行RegisterAction4-validation.xml的校驗,
再進行RegisterAction4-test-validation.xml
的校驗。
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:此處爲必須要填的校驗。 type的值
   在com.opensymphony.xwork2.validator.validators包下的default.xml文件下可查詢到
   每一個type都對應一個class,從中可以查看該type對應的類情況
  -->

  <field-validator type="requiredstring">

   <!--param屬性可以出現0到多次。
    trim是校驗方式type的值所對應的類的一個set方法的參數名稱。true,表示賦給trim的值爲true  -->
   <param name="trim">true</param>

   <!-- 表示一旦用戶信息不符合整個校驗規則的話輸出的提示信息  -->
   <message>用戶名不能爲空!!</message>
  </field-validator>

  <field-validator type="stringlength">
   <param name="minLength">6</param>
   <param name="maxLength">10</param>
   <message>用戶名必須在 ${minLength} 和 ${macLength} 之間</message>
  </field-validator>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章