1. 程式人生 > >Struts的型別轉換及輸入校驗(Struts2的輸入校驗)

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:檢查欄位是否匹配指定的正則表示式