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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- validation客戶端驗證框架使用手冊客戶端框架
- Struts框架_9 Struts2的驗證框架
- [資料校驗/資料質量] 資料校驗框架(Java):hibernate-validation框架Java
- 使用spring validation 作為資料校驗Spring
- 理解「交叉驗證」(Cross Validation)ROS
- struts2資料校驗
- 使用 Message Manager 實現開箱即用的驗證(Validation)資訊丟擲
- [系列] Gin框架 - 資料繫結和驗證框架
- 使用 GoFrame 框架 JWT 方式驗證使用者資訊GoFrame框架JWT
- 使用表單驗證,建立資料驗證層,Ajax 統一返回驗證錯誤資訊
- Laravel 的 Validation 檢索驗證錯誤訊息Laravel
- Play框架如何驗證使用者框架
- Spring-Validation(後端資料校驗) 你值得擁有Spring後端
- JAVAEE框架學習——Struts2——Action API 使用Java框架API
- 5. Bean Validation宣告式驗證四大級別:欄位、屬性、容器元素、類Bean
- 使用Spring Validation優雅地校驗引數Spring
- 使用jakarta.validation自定義校驗規則
- 理解ASP.NET Core - 模型繫結&驗證(Model Binding and Validation)ASP.NET模型
- 使用SpringBoot進行優雅的資料驗證Spring Boot
- django 驗證碼框架Django框架
- 表單資料驗證
- 驗證資料是否存在
- WebGeeker-Validation: 一個強大的 PHP 引數驗證器WebPHP
- 一個沒有技術含量的 validation 驗證層輪子
- mongoose使用validate驗證, 獲取自定義驗證資訊Go
- 【模型評估與選擇】交叉驗證Cross-validation: evaluating estimator performance模型ROSORM
- beego表達資料驗證Go
- Struts2的資料封裝封裝
- ssh框架搭建Struts2 06+spring2 5+hibernate3 2整合例項程式碼教程步驟框架Spring
- Spring Validation 的使用Spring
- element-ui使用from表單驗證資料問題UI
- HTML5 setCustomValidity()自定義驗證資訊HTML
- HTML5 setCustomValidity() 自定義驗證資訊HTML
- 訓練集(train set),驗證集(validation set)和測試集(test set)AI
- thinkphp驗證器獲取$data資料,自定義驗證,多條件唯一性驗證unique驗證PHP
- iOS教程 免費使用SMSSDK語音驗證的方法iOS
- Spring Boot中使用gRPC與Protobuf驗證教程原始碼Spring BootRPC原始碼
- 自定義react資料驗證元件React元件
- 如何驗證 elk 裡面的資料?