Struts2框架的資料驗證
阿新 • • 發佈:2018-12-10
資料驗證分為客戶端驗證和伺服器端驗證, Struts2框架的驗證屬於伺服器端的驗證
①程式設計式驗證
在動作類中重寫validate():
package com.rl.action; import org.apache.struts2.interceptor.validation.SkipValidation; import com.opensymphony.xwork2.ActionSupport; import com.opensymphony.xwork2.ModelDriven; import com.rl.model.Person; /** * ModelDriven的泛型就是需要接收的物件的類 * @author Administrator * */ public class PersonAction1 extends ActionSupport implements ModelDriven<Person>{ /** * 必須手動new一個物件 */ private Person person = new Person(); public Person getPerson() { return person; } public void setPerson(Person person) { this.person = person; } public String save(){ System.out.println(person); return SUCCESS; } public String delete(){ System.out.println(person); return SUCCESS; } /** * 返回person物件即可 */ @Override public Person getModel() { return person; } /** * validate方法在封裝引數之前做資料驗證 * 如果驗證不通過就跳轉到表單頁面 */ public void validate() { if(person.getId() == null || !(person.getId()+"").matches("\\d{1,5}")){ this.addFieldError("id", "id必須是1到5位的數字"); } if(!person.getName().matches("[a-zA-Z]{3,8}")){ //新增提示資訊, 引數①表單中文字域的name的值 引數②是提示資訊 this.addFieldError("name", "姓名只能是3-8位大小寫字母"); } } }
訪問(什麼都不填寫的情況下):
結果:
注意: 此種方法預設是對該動作類中的所有方法都做校驗的, 要想取消對某個/某些方法的校驗有兩種方法:
1 使用"@SkipValidation"註解:
@SkipValidation
public String delete(){
System.out.println(person);
return SUCCESS;
}
2 修改校驗的方法名, 方法命名規則: validate+"要驗證的方法名"(駝峰模式):
/** * validate方法在封裝引數之前做資料驗證 * 如果驗證不通過就跳轉到表單頁面 */ public void validateSave() { if(person.getId() == null || !(person.getId()+"").matches("\\d{1,5}")){ this.addFieldError("id", "id必須是1到5位的數字"); } if(!person.getName().matches("[a-zA-Z]{3,8}")){ //新增提示資訊, 引數①表單中文字域的name的值 引數②是提示資訊 this.addFieldError("name", "姓名只能是3-8位大小寫字母"); } }
②宣告式驗證
將驗證資訊配置在xml檔案中, 做到跟動作類分離, 以便後續可以修改, 該配置檔案的命名規範: 動作類的名稱+validation.xml
1 新建一個xml檔案, 該配置檔案必須建立在動作類的同級包下, 配置頭資訊:
<!DOCTYPE validators PUBLIC
"-//Apache Struts//XWork Validator 1.0.3//EN"
"http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">
"PersonAction1-validation.xml"配置檔案:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC
"-//Apache Struts//XWork Validator 1.0.3//EN"
"http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">
<validators>
<!--
field: 表單中要提交的文字域
name: 文字域中的name
-->
<field name="name">
<!-- 文字域的驗證器
-->
<field-validator type="requiredstring">
<!-- 錯誤資訊
-->
<message>姓名不能為空</message>
</field-validator>
</field>
</validators>
動作類中去掉驗證方法, 交給配置檔案
訪問結果: