1. 程式人生 > >struts2-資料驗證

struts2-資料驗證

資料驗證分前後端,這裡是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方法