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>