自定義校驗器例項
阿新 • • 發佈:2019-01-09
1.建立校驗器類MyValidator.java。該類繼承於FieldValidatortSupport類
package action; import com.opensymphony.xwork2.validator.ValidationException; import com.opensymphony.xwork2.validator.validators.FieldValidatorSupport; public class MyValidator extends FieldValidatorSupport { private String str; public String getStr() { return str; } public void setStr(String str) { this.str = str; } @Override public void validate(Object obj) throws ValidationException { // 被校驗的欄位名 String userName = super.getFieldName(); // 被校驗欄位的值 String value = super.getFieldValue(userName, obj).toString(); if (!str.equals(value)) {//被校驗的字串是否與制定的值相等 System.out.println(userName+","+value); super.addFieldError(super.getFieldName(), obj); } } }
2.註冊校驗器在src目錄下建立validators.xml。注:一旦建立自定義校驗器,則系統預設的校驗器會失效,必須將系統預設的校驗器註冊在validators.xml檔案中,才會生效。
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE validators PUBLIC "-//Apache Struts//XWork Validator Definition 1.0//EN" "http://struts.apache.org/dtds/xwork-validator-definition-1.0.dtd"> <validators> <validator name="test" class="action.MyValidator"></validator> </validators>
3.MyValidatorAction.java
package action; import com.opensymphony.xwork2.ActionSupport; public class MyValidatorAction extends ActionSupport{ /** * */ private static final long serialVersionUID = 3881597422005868510L; private String userName; private String userTelephone; private String userAddress; public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getUserTelephone() { return userTelephone; } public void setUserTelephone(String userTelephone) { this.userTelephone = userTelephone; } public String getUserAddress() { return userAddress; } public void setUserAddress(String userAddress) { this.userAddress = userAddress; } @Override public String execute() throws Exception { return SUCCESS; } }
4.建立MyValidatorAction-validation.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC "-//Apache Struts//XWork Validator 1.0.2//EN" "http://struts.apache.org/dtds/xwork-validator-1.0.2.dtd">
<validators>
<field name="userName">
<field-validator type="test">
<param name="str">ADMIN</param>
<message>使用者名稱ADMIN</message>
</field-validator>
</field>
</validators>
5.配置struts2.xml
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name="struts.i18n.encoding" value="utf-8" />
<constant name="struts.custom.i18n.resources" value="globalMessages" />
<package name="default" extends="struts-default">
<action name="myValidatorAction" class="action.MyValidatorAction">
<result name="success">/success.jsp</result>
<result name="input">/myValidator.jsp</result>
</action>
</package>
</struts>
6.myValidator.jsp
<%@ page language="java" contentType="text/html;charset=gb2312"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<html>
<head>
<title>手動校驗資料</title>
</head>
<body >
<jsp:include page="index.html"></jsp:include>
<center>
<h4>新增聯絡人</h4>
<p/>
<s:form action="myValidatorAction" method="post">
<s:textfield label="聯絡人姓名" name="userName"></s:textfield>
<s:textfield label="聯絡人電話" name="userTelephone"></s:textfield>
<s:textfield label="聯絡人地址" name="userAddress"></s:textfield>
<s:submit value="提交"/>
</s:form>
</center>
</body>
</html>