一) Validator接口
Spring的Validation功能设计很简单。使用Validator功能即可:
public class Person {
private String name;
private int age;
// the usual getters and setters...
}
public class PersonValidator implements Validator {
/**
* This Validator validates just Person instances
*/
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", "too.darn.old");
}
}
}
Spring的Validate策略就是一个类(Person)对应一个校验类(PersonValidator)。至于校验类的绑定,可以代码中显式的调用,也可以是采用annotation。个人比较推荐用annotation的方法。而如果在一个类的校验中需要用到另一个类的校验,我们可以这样写:
public class CustomerValidator implements Validator {
private final Validator addressValidator;
public CustomerValidator(Validator addressValidator) {
if (addressValidator == null) {
throw new IllegalArgumentException(
"The supplied [Validator] is required and must not be null.");
}
if (!addressValidator.supports(Address.class)) {
throw new IllegalArgumentException(
"The supplied [Validator] must support the validation of [Address] instances.");
}
this.addressValidator = addressValidator;
}
/**
* This Validator validates Customer instances, and any subclasses of Customer too
*/
public boolean supports(Class clazz) {
return Customer.class.isAssignableFrom(clazz);
}
public void validate(Object target, Errors errors) {
ValidationUtils.rejectIfEmptyOrWhitespace(errors, "firstName", "field.required");
ValidationUtils.rejectIfEmptyOrWhitespace(errors, "surname", "field.required");
Customer customer = (Customer) target;
try {
errors.pushNestedPath("address");
ValidationUtils.invokeValidator(this.addressValidator,customer.getAddress(), errors);
} finally {
errors.popNestedPath();
}
}
}
在CustomerValidator 中就用到了addressValidator。另外对于Errors类,可在Spring MVC模块中结合使用。具体使用方式我们在Spring MVC模块的介绍中再详细介绍。
分享到:
相关推荐
标题中的"spring-boot-starter-validation-1.3.5.RELEASE.zip"是一个Spring Boot的启动模块,专注于数据验证功能的版本。Spring Boot是Java生态系统中一个流行的微服务框架,它简化了创建独立、生产级别的Spring应用...
spring-modules-validation-0.6.jar
java运行依赖jar包
java运行依赖jar包
常用jar包
非常不错的数据校验jar,与spring的无缝接入,是java pojo对象校验的好框架。
java运行依赖jar包
java运行依赖jar包
spring-boot-starter-validation-2.2.0.RELEASE
首先,Spring Modules的核心特性之一是其验证(Validation)支持。在Java Web开发中,数据验证是必不可少的,Spring Modules提供了一个统一的验证层,使得开发者可以方便地在Spring应用中实现前端和后端的数据验证。...
2. `javax.validation-api.jar`:这是JSR 303/349标准API的jar包,提供验证接口和注解定义。 3. `jboss-logging.jar`:Hibernate Validator依赖于这个日志框架来输出验证错误信息。 4. `classmate.jar`:Hibernate ...
在Spring Boot应用中,`spring-boot-starter-validation`是一个非常重要的模块,它为我们的接口参数校验提供了便利。本项目是基于Spring Boot框架构建的,旨在实现一些实用功能,其中包括了对请求参数的有效性检查。...
lib内容: 1\spring-aop-4.3.0.RELEASE.jar 2\spring-aspects-4.3.0.RELEASE.jar 3\spring-beans-4.3.0.RELEASE.jar 4\spring-bridge-2.3.0-b10.jar 5\spring-context-4.3.0....21\validation-api-1.1.0.Final.jar
'springboot-mybatis-redis','springboot-mybatis-redis-annotation','springboot-properties','springboot-restful','springboot-validation-over-json','springboot-webflux','spring-data-elasticsearch-crud','...
javax.validation javax.xml.bind javax.xml.rpc javax.xml.soap javax.xml.stream javax.xml.ws net.sourceforge.cglib net.sourceforge.ehcache net.sourceforge.jasperreports net.sourceforge.jexcelapi ...
资源包中,包含: spring.jar spring-aspects.jar spring-mock.jar ...org\springframework\validation org\springframework\web org\springframework\orm org\springframework\jdbc .....
在Spring 3.0版本中,引入了大量新特性,例如对JSR-303(Java Bean Validation)的支持,提供了基于注解的事务管理,增强了AOP(面向切面编程)功能,以及对RESTful Web服务的更好支持。依赖库通常包括Spring核心、...
可以找到使用 Spring ApplicationContext 特 性时所需的全部类, JDNI 所需的全部类, UI 方面的用来与模板 (Templating) 引擎如 Velocity、 FreeMarker、JasperReports 集成的类,以及校验 Validation 方面的相关...
资源包中,包含: spring.jar spring-aspects.jar spring-mock.jar ...org\springframework\validation org\springframework\web org\springframework\orm org\springframework\jdbc .....
activiti-process-validation-5.21.0.jar activiti-spring-5.21.0.jar analyzer-2012_u6.jar aopalliance-1.0.jar apache-ant-zip-2.3.jar asm-4.2.jar aspectjrt-1.7.4.jar aspectjweaver-1.7.4.jar avalon-...