一、輸入校驗: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>