struts2--自定义校验器

来源:互联网 发布:张子枫清华附中知乎 编辑:程序博客网 时间:2024/06/01 23:55

以输入密码必须由字母和数字组成说明:


自定义拦截器:

定义一个验证器的类:

> 自定义的验证器都需要实现 Validator接口. 
> 可以选择继承 ValidatorSupport 或 FieldValidatorSupport 类,这两个类都实现了Validator接口了;FieldValidatorSupport继承ValidatorSupport,FieldValidatorSupport用于   字段验证
> 若希望实现一个一般的验证器, 则可以继承 ValidatorSupport
> 若希望实现一个字段验证器, 则可以继承 FieldValidatorSupport


实现的校验器类MyValidate.java

package com.validator;import com.opensymphony.xwork2.validator.ValidationException;import com.opensymphony.xwork2.validator.validators.FieldValidatorSupport;public class MyValidate extends FieldValidatorSupport{@Overridepublic void validate(Object object) throws ValidationException {String fieldName = super.getFieldName();//获取字段名String value = (String) super.getFieldValue(fieldName, object);if(value == null || value == ""){return;}if(!isNum(value)){addFieldError(fieldName, object);}}    private static final String GROUP = "0123456789";    private static final String GROUP2 = "qwertyuioplkjhgfdsazxcvbnm";        public boolean isNum(String value) {boolean fag1 = false;boolean fag2 = false;for(int i = 0; i < value.length(); i++){if(fag1&&fag2){return true;}String sub = value.substring(i, i+1);if(!fag1){if(GROUP.contains(sub)){fag1 = true;continue;}}if(!fag2){if(GROUP2.contains(sub)){fag2 = true;continue;}}}return false;}}
> 默认情况下, Struts2 会在 类路径的根目录下加载 validators.xml 文件. 在该文件中加载验证器.
    该文件的定义方式同默认的验证器的那个配置文件: 位于 com.opensymphony.xwork2.validator.validators 下的 default.xml
    
> 若类路径下没有指定的验证器, 则从 com.opensymphony.xwork2.validator.validators 下的 default.xml 中的验证器加载 

所以,需要在src目录下定义一个validators.xml 文件    

代码实现如下:

validators.xml

<?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">  <!-- 此DOCTYPE和default.xml中的一致 --><validators><!-- 验证器注册 -->  <validator name = "test" class = "com.validator.MyValidate"/></validators> 

LoginAction-validation.xml:

<?xml version="1.0" encoding="UTF-8"?>  <!DOCTYPE validators PUBLIC  "-//OpenSymphony Group//XWork Validator 1.0.3//EN"  "http://www.opensymphony.com/xwork/xwork-validator-1.0.3.dtd">  <validators>    <validator type = "test">      <param name = "fieldName">user.password</param>      <message>密码必须由数字和字母组成</message>  </validator></validators>      

LoginAction类:

package com.action;import com.bean.User;import com.opensymphony.xwork2.ActionSupport;public class LoginAction extends ActionSupport{ private User user; public String execute() {return SUCCESS;}public User getUser() {return user;}public void setUser(User user) {this.user = user;} }




原创粉丝点击