struts2-資料驗證
阿新 • • 發佈:2018-12-06
資料驗證分前後端,這裡是struts提供的服務端資料驗證,這個驗證是在action方法執行之前進行的。
struts2中的validator配置在com.opensymphony.xwork2.validator.validators檔案下,可進行呼叫。
struts2實現資料驗證有兩種方式:
一、手工編寫程式碼實現
1、action繼承actionSupport,重寫validate()
public class testAction extends ActionSupport {
private String name;
private String mobile;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getMobile() {
return mobile;
}
public void setMobile(String mobile) {
this.mobile = mobile;
}
public String execute(){
System.out.println("doFirst" );
return "success";
}
@Override
public void validate() {
if(name == null || "".equals(name)){
this.addFieldError("age", "不能為空");
}
if(mobile == null || "".equals(mobile)){
this.addFieldError("mobile", "不能為空");
}else if (!Pattern.matches("^1[34578]\\d{9}$" , mobile)) {
this.addFieldError("mobile", "格式錯誤");
}
super.validate();
}
}
2、表單頁面(用struts-tags中的< s:fielderror>顯示錶單驗證錯誤)
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<s:fielderror></s:fielderror>
<form action="test/some" method="post">
mobile : <input name="mobile" type="text"><br>
name: <input name="name" type="text"><br>
<input type="submit" value="submit">
</form>
</body>
</html>
當action中有多個執行方法時,可通過在validate後加上執行方法名(首字母大寫),即可讓validate只在訪問該方法前執行。
二、xml配置實現
在要進行驗證操作action所在包,新建Action類名-validation.xml, xml的約束在struts2-core-2.5.14.1.jar/xwork-validator-1.0.3.dtd
<?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-validator type="requiredstring"><!-- 驗證器配置 -->
<!-- <param name="trim">true</param> -->
<message>不能為空</message>
</field-validator>
</field>
<field name="mobile">
<field-validator type="requiredstring">
<message>不能為空</message>
</field-validator>
<field-validator type="regex">
<param name="regex"><![CDATA[^1[34578]\d{9}$]]></param><!-- 條件引數-->
<message>格式錯誤</message>
</field-validator>
</field>
</validators>
當action中有多個執行方法時,指定方法執行,重新命名檔案為:Action類名-struts.xml中action.name-validation.xml
總結Action執行流程:
型別轉換->set值->資料驗證->action方法