`
thaIm
  • 浏览: 91194 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Spring --- Validation

阅读更多
一) 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-starter-validation-1.3.5.RELEASE.zip"是一个Spring Boot的启动模块,专注于数据验证功能的版本。Spring Boot是Java生态系统中一个流行的微服务框架,它简化了创建独立、生产级别的Spring应用...

    spring-modules-validation-0.6.jar

    spring-modules-validation-0.6.jar

    spring-boot-starter-validation-1.3.0.RELEASE.jar

    java运行依赖jar包

    spring-boot-starter-validation-2.2.2.RELEASE.jar

    java运行依赖jar包

    spring-boot-starter-validation-2.3.7.RELEASE.jar

    常用jar包

    spring-modules-validation.jar

    非常不错的数据校验jar,与spring的无缝接入,是java pojo对象校验的好框架。

    spring-boot-starter-validation-1.3.3.RELEASE.jar

    java运行依赖jar包

    spring-boot-starter-validation-2.2.4.RELEASE.jar

    java运行依赖jar包

    spring-modules-0.9.zip

    首先,Spring Modules的核心特性之一是其验证(Validation)支持。在Java Web开发中,数据验证是必不可少的,Spring Modules提供了一个统一的验证层,使得开发者可以方便地在Spring应用中实现前端和后端的数据验证。...

    spring注解-validation所用到的jar包

    2. `javax.validation-api.jar`:这是JSR 303/349标准API的jar包,提供验证接口和注解定义。 3. `jboss-logging.jar`:Hibernate Validator依赖于这个日志框架来输出验证错误信息。 4. `classmate.jar`:Hibernate ...

    集成spring-boot-starter-validation对接口参数校验.zip

    在Spring Boot应用中,`spring-boot-starter-validation`是一个非常重要的模块,它为我们的接口参数校验提供了便利。本项目是基于Spring Boot框架构建的,旨在实现一些实用功能,其中包括了对请求参数的有效性检查。...

    spring4.3.0lib

    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

    spring-boot很多实例

    'springboot-mybatis-redis','springboot-mybatis-redis-annotation','springboot-properties','springboot-restful','springboot-validation-over-json','springboot-webflux','spring-data-elasticsearch-crud','...

    spring-framework-3.0.5.RELEASE-dependencies-1

    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-framework-2.0.2

    资源包中,包含: spring.jar spring-aspects.jar spring-mock.jar ...org\springframework\validation org\springframework\web org\springframework\orm org\springframework\jdbc .....

    spring-framework release 包含dist和dependencies

    在Spring 3.0版本中,引入了大量新特性,例如对JSR-303(Java Bean Validation)的支持,提供了基于注解的事务管理,增强了AOP(面向切面编程)功能,以及对RESTful Web服务的更好支持。依赖库通常包括Spring核心、...

    spring-context-5.3.6.jar

    可以找到使用 Spring ApplicationContext 特 性时所需的全部类, JDNI 所需的全部类, UI 方面的用来与模板 (Templating) 引擎如 Velocity、 FreeMarker、JasperReports 集成的类,以及校验 Validation 方面的相关...

    spring-framework2

    资源包中,包含: spring.jar spring-aspects.jar spring-mock.jar ...org\springframework\validation org\springframework\web org\springframework\orm org\springframework\jdbc .....

    Spring主流jar包大全

    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-...

    spring-mvc-官方中文文档

    11. **验证**:Spring MVC 集成了 Bean Validation API,允许开发者对模型数据进行校验,通过 @Valid 注解和 ConstraintValidator 实现自定义验证规则。 12. **消息转换**:Spring MVC 提供了 HttpMessageConverter...

Global site tag (gtag.js) - Google Analytics