6.4.使用Spring的Validator接口进行校验

优质
小牛编辑
131浏览
2023-12-01

6.4. 使用Spring的Validator接口进行校验

你可以使用Spring提供的validator接口进行对象的校验。Validator接口的使用相当的直接,同时它能与一个所谓的Errors对象协同工作。换句话说,在Spring做校验的时候,它会将所有的校验错误汇总到Errors对象中去。

正如先前所说,Validator接口的使用相当的直接,你不妨实现一下这个接口,考虑下面这个简单的数据类:

public class Person {
  private String name;
  private int age;

  // the usual suspects: getters and setters
}

实现org.springframework.validation.Validator接口,我们将提供对Person 类的校验行为,下面就是这个Validator接口需要实现的方法:

  • supports(Class):表示这个校验器是否支持提供的object。

  • validate(Object, org.springframework.validation.Errors):对提供的对象进行校验,并将校验的错误注册到相应的Errors对象中。

实现一个校验器也比较简单,尤其是当你了解Spring所提供的ValidationUtils的时候。我们一起来看一下如何才能创建一个校验器。

public class PersonValidator implements Validator {
    
    public boolean supports(Class clazz) {
  return Person.class.equals(clazz);
    }
    
    public void validate(Object obj, Errors e) {
  ValidationUtils.rejectIfEmpty(e, "name", "name.empty");
  Person p = (Person) obj;
  if (p.getAge() < 0) {
e.rejectValue("age", "negativevalue");
  } else if (p.getAge() > 110) {
e.rejectValue("age", "tooold");
  }
    }
}

正如你在上面所看到的那样,我们使用了ValidationUtils中的一个静态方法来对name属性进行校验。请参照ValidationUtils相关的JavaDoc,查看一下除了例子中介绍过的,其他的一些功能。