Struts的型別轉換及輸入校驗(Struts2的輸入校驗)
Struts輸入校驗:
(1)在Action類中處理方法進行校驗,若沒有指定方法就用execute()方法
(2)繼承ActionSupport類,並重寫其validate()方法實現輸入校驗
(3)應用struts2框架進行校驗
1.使用execute方法校驗:
public String execute()throws Exception{
if(username.equals("")||username==null){
addFieldError("username", "username為空");
}else if(password.equals("")||password==null){
addFieldError("password", "password為空");
}else if(repassword.equals("")||repassword==null){
addFieldError("repassword", "repassword為空");
}else if(!repassword.equals(password)){
addFieldError("password", "兩次輸入密碼不同");
}
if(hasErrors()){
return INPUT;
}
return SUCCESS;
}
2.重寫validate()方法進行校驗:
在action中寫:
public void validate(){
if(username.equals("")||username==null){
addFieldError("username", "username為空");
}else if(password.equals("")||password==null){
addFieldError("password", "password為空");
}else if(repassword.equals("")||repassword==null){
addFieldError("repassword", "repassword為空");
}else if(!repassword.equals(password)){
addFieldError("password", "兩次輸入密碼不同");
}else if(age<1||age>150){
addFieldError("age", "age必須在1到150之間");
}
}
3.繼承struts框架進行校驗:
跟action寫在一個路徑下,命名規則是:actionName-validation.xml或者actionName-別名-validation.xml
<validate></validate>標籤:使用該標籤可以宣告欄位型或非欄位型兩種型別校驗器
欄位型校驗器配置格式如下:
<validator type="校驗器名稱">
<param name="fieldName>待校驗欄位名</param>
<message>校驗失敗資訊</message>
</validator>
非欄位型校驗器格式如下:
<validator type="校驗器名稱>
<param name="expression">OGNL表示式取值</param>
<message>校驗失敗資訊</message>
</validator>
<field></field>標籤:使用該標籤可以在其內宣告多個欄位型後者非欄位型校驗器
<field name="待校驗欄位名">
<field-validator type="校驗器名">
<param name="引數名">引數值</param>
<message>校驗失敗資訊</message>
</field-validator>
</field>
<!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>username為空!</message>
</field-validator>
</field>
<field name="password">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>password為空!</message>
</field-validator>
</field>
<field name="repassword">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>repassword為空!</message>
</field-validator>
<field-validator type="fieldexpression">
<param name="expression">
<![CDATA[(repassword.equals(password))]]>
</param>
<message>兩次輸入密碼不同!</message>
</field-validator>
</field>
<field name="age">
<field-validator type="int">
<param name="min">1</param>
<param name="max">150</param>
<message>age必須在1到150之間</message>
</field-validator>
</field>
</validators>
Struts2提供了下面幾種型別的校驗框架:
required:檢查欄位是否為空
requiredstring:檢查欄位是否為字串且是否為空
int:檢查欄位是否為整數且在[min,max]範圍內
double:檢查欄位是否為雙精度浮點數且在[min,max]範圍內
date:檢查欄位是否為日期格式且在[min,max]範圍內
expression:對指定OGNL表示式求值
fieldexpression:對指定OGNL表示式求值
email:檢查欄位是否為E-mail格式
url:檢查欄位是否為URL格式
visitor:引用指定物件各屬性對應的檢驗規則
conversion:檢查欄位是否發生型別的錯誤
stringlength:檢查欄位長度是否在指定範圍內
regex:檢查欄位是否匹配指定的正則表示式