Struts2的自定义校验规则

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

Struts2的自定义校验规则_第1张图片

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
Struts2的自定义校验规则_第2张图片
引入头文件,创建自定义校验的文件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>

测试
Struts2的自定义校验规则_第3张图片

你可能感兴趣的:(Struts2,struts2,java)