Struts2的自定义校验规则
1、自定义校验器
若需要字段验证程序,可以继承FiledValidatorSupport类
针对一个字段的校验(例如:用户名)
a、JSP文件
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<s:fielderror></s:fielderror>
<h1>自定义的校验器</h1>
<form action="${ pageContext.request.contextPath }/regist2.action" method="post">
年龄:<input type="text" name="age"/>
<input type="submit" value="提交"/>
</form>
</body>
</html>
b、RegistAction2
package com.itzheng.web.action.demo6;
import com.opensymphony.xwork2.ActionSupport;
public class RegistAction2 extends ActionSupport {
private int age;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String execute() throws Exception {
// TODO Auto-generated method stub
return NONE;
}
}
c、struts.xml
d、MyAgeVaildator继承ValidatorSupport类
package com.itzheng.web.action.demo6;
import com.opensymphony.xwork2.validator.ValidationException;
import com.opensymphony.xwork2.validator.validators.FieldValidatorSupport;
/*
* 自定义的校验规则
*/
public class MyAgeVaildator extends FieldValidatorSupport {
@Override
public void validate(Object obj) throws ValidationException {
// 获得字段名称:
String name = this.getFieldName();
//获得字段的值
Object value = this.getFieldValue(name, obj);//得到文本框当中的值
//instanceof用来测试一个对象是否为一个类的实例,
if(value instanceof Integer) {//判断value是否是Integer的实现类
int age = (Integer)value;
if(age < 0) {
this.addFieldError(name, obj);
}
}
}
}
e、在src下创建validators.xml:注册校验规则
需要找到头文件,在xwork-core-2.3.7.jar下的xwork-validator-config-1.0.dtd
引入头文件,创建自定义校验的文件validators.xml在src下
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC
"-//Apache Struts//XWork Validator Config 1.0//EN"
"http://struts.apache.org/dtds/xwork-validator-config-1.0.dtd">
<validators>
<validator name="age" class="com.itzheng.web.action.demo6.MyAgeVaildator">
</validator>
</validators>
f、使用上面创建好的校验规则,创建XML,设置要校验的信息
在和要校验信息类同包下创建RegistAction2-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="age">
<!-- 校验规则 -->
<!-- type当中的必须和validators当中validator name="age"名称一样 -->
<field-validator type="age">
<!-- 错误信息 -->
<message>年龄不能为负数!</message>
</field-validator>
</field>
</validators>
测试