如何自定义验证规则
* 在jsp页面增加一个组件
<s:textfield name="age" />
* 在action中增加private Integer age属性
* 自定义验证规则
public class AgeValidate extends FieldValidatorSupport {
//此验证是拦截器验证所以会在调用每个action的方法前调用,可以使用@SkipValidation注解方法跳过校验 如跳到页面的方法
public void validate(Object object) throws ValidationException {
//object cn.itcast.validate.ValidateXmlAction
System.out.println("object "+object);
//获取字段的名称
String fieldName=this.getFieldName();
//获取字段的值
Object fieldValue=this.getFieldValue(fieldName, object);
//判断字段的值是否是Integer类型
if(fieldValue instanceof java.lang.Integer){
//转化为Integer类型
Integer age=(Integer)fieldValue;
//和0比对
//如果小于0,增加错误提示信息
if(age<0){
this.addFieldError(fieldName, object);
}
}
}
}
* 注册验证规则
* 在当前工程的src下创建validators.xml文件
* 该文件的规范在xwork-core-2.1.6.jar\xwork-validator-config-1.0.dtd
* 配置如下
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC
"-//OpenSymphony Group//XWork Validator Config 1.0//EN"
"http://www.opensymphony.com/xwork/xwork-validator-config-1.0.dtd">
<validators>
<!--validator声明验证规则
* name:验证规则的名称(唯一)
* class验证规则对应的类
-->
<validator name="ageValidate" class="cn.itcast.validate.AgeValidate"></validator>
</validators>
* 在ValidateXmlAction-validateXmlAction_login-validation.xml增加如下配置
<!-- 验证年龄 -->
<field name="age">
<field-validator type="ageValidate">
<message><![CDATA[年龄不能为负数]]></message>
</field-validator>
</field>
* 测试
struts2自定义验证规则及配置使用
最新推荐文章于 2022-03-21 08:57:52 发布