Struts2教程5:使用Validation框架驗證資料
本文為原創,如需轉載,請註明作者和出處,謝謝!
上一篇:Struts2教程4:使用validate方法驗證資料
在《Struts2教程4:使用validate方法驗證資料》中曾講到使用validate方法來驗證客戶端提交的資料,但如果使用validate方法就會將驗證程式碼和正常的邏輯程式碼混在一起,但這樣做並不利於程式碼維護,而且也很難將過些程式碼用於其他程式的驗證。在Struts2中為我們提供了一個Validation框架,這個框架和Struts1.x提供的Validation框架類似,也是通過XML檔案進行配置。
一、服務端驗證
下面將給出一個例子來演示如何使用Struts2的validation框架來進行服務端驗證。我們可以按著如下幾步來編寫這個程式:
【第1步】建立Action類(NewValidateAction.java)
package action;
import com.opensymphony.xwork2.ActionSupport;
public class NewValidateAction extends ActionSupport
{
private String msg; // 必須輸入
private int age; // 在13和20之間
public String getMsg()
{
return msg;
}
public void setMsg(String msg)
{
this.msg = msg;
}
public int getAge()
{
return age;
}
public void setAge(int age)
{
this.age = age;
}
}
下面我們來驗證msg和age屬性。
【第2步】配置Action類,struts.xml的程式碼如下:
br> "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
/validate_form.jsp
/validate_form.jsp
【第3步】編寫驗證規則配置檔案
這是一個基於XML的配置檔案,和struts1.x中的validator框架的驗證規則配置檔案類似。但一般放到和要驗證的.class檔案在同一目錄下,而且配置檔名要使用如下兩個規則中的一個來命名:
1.-validation.xml
2.--validation.xml
其中就是struts.xml中的name屬性值。在本例中我們使用第一種命名規則,所以檔名是NewValidateAction-validation.xml。檔案的內容如下:
請輸入資訊
13
20
必須在 13至20之間
這個檔案使用了兩個規則:requiredstring(必須輸入)和int(確定整型範圍)。關於其他更詳細的驗證規則,請讀者訪問http://struts.apache.org/2.0.11.1/docs/validation.html來檢視。
【第4步】編寫資料錄入JSP頁。
在Web根目錄中建立一個validate_form.jsp檔案,程式碼如下:
">
驗證資料
大家要注意一下,如果在struts.xml的標籤中指定namespace屬性,需要在
... ...
在上面的程式中還使用了一個styles.css來定製錯誤資訊的風格。程式碼如下:
.label {font-style.:italic; }
.errorLabel {font-style.:italic; color:red; }
.errorMessage {font-weight:bold; color:red; }
需要在Web根目錄中建立一個styles目錄,並將styles.css
假設Web工程的上下文路徑是validation,可以使用如下的URL來測試這個程式:
http://localhost:8080/validation/validate_form.jsp
顯示結果如圖1所示。
01.jpg
圖1
二、客戶端驗證
在Struts2中實現客戶端驗證非常簡單,只需要在 ... 即可。
三、驗證巢狀屬性
有一類特殊的屬性,即這個屬性的型別是另外一個JavaBean,如有一個User類,程式碼如下:
package data;
public class User
{
private String name;
private int age;
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
public int getAge()
{
return age;
}
public void setAge(int age)
{
this.age = age;
}
}
在NewValidateAction類中加一個user屬性,程式碼如下:
package action;
import com.opensymphony.xwork2.ActionSupport;
import data.User;
public class NewValidateAction extends ActionSupport
{
private String msg;
private int age;
private User user;
public String getMsg()
{
return msg;
}
public void setMsg(String msg)
{
this.msg = msg;
}
public int getAge()
{
return age;
}
public void setAge(int age)
{
this.age = age;
}
public User getUser()
{
return user;
}
public void setUser(User user)
{
this.user = user;
}
}
如果要驗證NewValidateAction中的user屬性,可以使用visitor驗證器。操作過程如下:
首先在NewValidateAction-validation.xml中加入一個標籤,程式碼如下:
... ...
abc
true
User:
其中context引數將作為驗證User類屬性的檔名的一部分,如user屬性返回一個User物件,那麼用於驗證User物件屬性的檔名為User-abc-validation.xml。這個檔案要和User.class檔案在同一個目錄中。appendPrefix表示是否在欄位里加user,如果為true,Struts2就會使用user.name在form提交的資料中查詢要驗證的資料。這個屬性的預設值是true。如果出錯,Struts2會將標籤中的資訊加到User-abc-validation.xml檔案中的相應錯誤資訊前面。
User-abc-validation.xml檔案的內容如下:
請輸入name
5
20
必須在 5至20之間
下面修改validate_form.jsp,程式碼如下:
大家可以看到,最後兩個的name屬性是user.name和user.age,正好是加了字首的。
現在重新訪問 http://localhost:8080/validation/validate_form.jsp,驗證介面如圖2所示。
03.jpg
圖2
經筆者測試,使用visitor無法以客戶端驗證的方式來驗證user屬性,但NewValidateAction中其他的屬性可以使用客戶端測試。
[ 本帖最後由 銀河使者 於 2008-4-21 23:09 編輯 ]
上一篇:Struts2教程4:使用validate方法驗證資料
在《Struts2教程4:使用validate方法驗證資料》中曾講到使用validate方法來驗證客戶端提交的資料,但如果使用validate方法就會將驗證程式碼和正常的邏輯程式碼混在一起,但這樣做並不利於程式碼維護,而且也很難將過些程式碼用於其他程式的驗證。在Struts2中為我們提供了一個Validation框架,這個框架和Struts1.x提供的Validation框架類似,也是通過XML檔案進行配置。
一、服務端驗證
下面將給出一個例子來演示如何使用Struts2的validation框架來進行服務端驗證。我們可以按著如下幾步來編寫這個程式:
【第1步】建立Action類(NewValidateAction.java)
package action;
import com.opensymphony.xwork2.ActionSupport;
public class NewValidateAction extends ActionSupport
{
private String msg; // 必須輸入
private int age; // 在13和20之間
public String getMsg()
{
return msg;
}
public void setMsg(String msg)
{
this.msg = msg;
}
public int getAge()
{
return age;
}
public void setAge(int age)
{
this.age = age;
}
}
下面我們來驗證msg和age屬性。
【第2步】配置Action類,struts.xml的程式碼如下:
br> "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
【第3步】編寫驗證規則配置檔案
這是一個基於XML的配置檔案,和struts1.x中的validator框架的驗證規則配置檔案類似。但一般放到和要驗證的.class檔案在同一目錄下,而且配置檔名要使用如下兩個規則中的一個來命名:
1.
2.
其中
13
20
必須在 13至20之間
這個檔案使用了兩個規則:requiredstring(必須輸入)和int(確定整型範圍)。關於其他更詳細的驗證規則,請讀者訪問http://struts.apache.org/2.0.11.1/docs/validation.html來檢視。
【第4步】編寫資料錄入JSP頁。
在Web根目錄中建立一個validate_form.jsp檔案,程式碼如下:
">
大家要注意一下,如果在struts.xml的
... ...
在上面的程式中還使用了一個styles.css來定製錯誤資訊的風格。程式碼如下:
.label {font-style.:italic; }
.errorLabel {font-style.:italic; color:red; }
.errorMessage {font-weight:bold; color:red; }
需要在Web根目錄中建立一個styles目錄,並將styles.css
假設Web工程的上下文路徑是validation,可以使用如下的URL來測試這個程式:
http://localhost:8080/validation/validate_form.jsp
顯示結果如圖1所示。
01.jpg
圖1
二、客戶端驗證
在Struts2中實現客戶端驗證非常簡單,只需要在
三、驗證巢狀屬性
有一類特殊的屬性,即這個屬性的型別是另外一個JavaBean,如有一個User類,程式碼如下:
package data;
public class User
{
private String name;
private int age;
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
public int getAge()
{
return age;
}
public void setAge(int age)
{
this.age = age;
}
}
在NewValidateAction類中加一個user屬性,程式碼如下:
package action;
import com.opensymphony.xwork2.ActionSupport;
import data.User;
public class NewValidateAction extends ActionSupport
{
private String msg;
private int age;
private User user;
public String getMsg()
{
return msg;
}
public void setMsg(String msg)
{
this.msg = msg;
}
public int getAge()
{
return age;
}
public void setAge(int age)
{
this.age = age;
}
public User getUser()
{
return user;
}
public void setUser(User user)
{
this.user = user;
}
}
如果要驗證NewValidateAction中的user屬性,可以使用visitor驗證器。操作過程如下:
首先在NewValidateAction-validation.xml中加入一個
... ...
abc
true
其中context引數將作為驗證User類屬性的檔名的一部分,如user屬性返回一個User物件,那麼用於驗證User物件屬性的檔名為User-abc-validation.xml。這個檔案要和User.class檔案在同一個目錄中。appendPrefix表示是否在欄位里加user,如果為true,Struts2就會使用user.name在form提交的資料中查詢要驗證的資料。這個屬性的預設值是true。如果出錯,Struts2會將
User-abc-validation.xml檔案的內容如下:
5
20
必須在 5至20之間
下面修改validate_form.jsp,程式碼如下:
大家可以看到,最後兩個
現在重新訪問 http://localhost:8080/validation/validate_form.jsp,驗證介面如圖2所示。
03.jpg
圖2
經筆者測試,使用visitor無法以客戶端驗證的方式來驗證user屬性,但NewValidateAction中其他的屬性可以使用客戶端測試。
[ 本帖最後由 銀河使者 於 2008-4-21 23:09 編輯 ]
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12921506/viewspace-246356/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Struts2教程4:使用validate方法驗證資料
- validation客戶端驗證框架使用手冊客戶端框架
- Struts框架_9 Struts2的驗證框架
- [資料校驗/資料質量] 資料校驗框架(Java):hibernate-validation框架Java
- 使用spring validation 作為資料校驗Spring
- 理解「交叉驗證」(Cross Validation)ROS
- 交叉驗證(Cross validation)總結ROS
- struts2資料校驗
- 交叉驗證(Cross Validation)原理小結ROS
- [系列] Gin框架 - 資料繫結和驗證框架
- Struts 驗證框架 配置和使用框架
- 在struts2框架中實現手動處理輸入驗證框架
- Struts2入門教程(學習教程資料).pdf
- Play框架如何驗證使用者框架
- 使用 Message Manager 實現開箱即用的驗證(Validation)資訊丟擲
- 使用表單驗證,建立資料驗證層,Ajax 統一返回驗證錯誤資訊
- Struts2框架的基本使用框架
- 使用Validator做SpringMVC的驗證框架 - Validator前端驗證SpringMVC框架前端
- 使用validate驗證資料檢查資料壞塊
- Laravel 的 Validation 檢索驗證錯誤訊息Laravel
- 使用 GoFrame 框架 JWT 方式驗證使用者資訊GoFrame框架JWT
- 來玩Play框架06 使用者驗證框架
- django 驗證碼框架Django框架
- 驗證資料是否存在
- 表單資料驗證
- 使用 .NET 5 體驗大資料和機器學習大資料機器學習
- [翻譯]Play框架1.2.7版本教程(8) - 新增驗證框架
- 5. Bean Validation宣告式驗證四大級別:欄位、屬性、容器元素、類Bean
- Laravel 中 validation 驗證 返回中文提示 全域性設定Laravel
- 【原創】Struts1.x系列教程(12):Validator驗證框架的內建標準驗證框架
- struts2 使用Maven搭建Struts2框架的開發環境Maven框架開發環境
- Spring-Validation(後端資料校驗) 你值得擁有Spring後端
- 驗證HTML的5個原因和5個資源HTML
- 關於表的資料塊驗證 DUMP 工具 使用
- beego表達資料驗證Go
- MVC 後設資料驗證MVC
- 一個沒有技術含量的 validation 驗證層輪子
- WebGeeker-Validation: 一個強大的 PHP 引數驗證器WebPHP