如何在服务层中结合JSR-303和Spring Validator类?

伊万

我有一些模型课

public class Account {

    @Email
    private String email;

    @NotNull
    private String rule;
}

和弹簧验证器

public class AccountValidator implements Validator {

    @Override
    public boolean supports(Class aClass) {
        return Account.class.equals(aClass);
    }

    @Override
    public void validate(Object obj, Errors errors) {
        Account account = (Account) obj;
        ValidationUtils.rejectIfEmpty(errors, "email", "email.required");
        ValidationUtils.rejectIfEmpty(errors, "rule", "rule.required");

        complexValidateRule(account.getRule(), errors);
    }

    private void complexValidateRule(String rule, Errors errors) {
        // ...
    }
}

我为我服务

AccountValidator validator = new AccountValidator();
Errors errors = new BeanPropertyBindingResult(account, "account");
validator.validate(account, errors);

我可以在验证过程中添加@ Email,@ NotNull(JSR-303)约束,而不在AccountValidator中描述这些规则吗?

我知道@Valid在spring-controllers中如何工作,但是服务层又如何呢?是否有可能?如何以适当的方式进行这种验证?我可以使用Hibernate Validator吗?

马蒂亚斯

Spring提供了一个适配器来合并两个验证API。有关更多信息,请参见当前的Spring JavaDoc

一个可能的实现是

public class AccountValidator implements Validator {

  private final SpringValidatorAdapter validator;

  public AccountValidator(SpringValidatorAdapter validator) {
      super();
      this.validator = validator;
  }

  @Override
  public boolean supports(Class aClass) {
      return Account.class.equals(aClass);
  }

  @Override
  public void validate(Object obj, Errors errors) {

      //jsr303
      validator.validate(obj, errors);

      //custom rules
      Account account = (Account) obj;
      complexValidateRule(account.getRule(), errors);
  }

  private void complexValidateRule(String rule, Errors errors) {
      // ...
  }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将Spring Validator和JSR 303混合使用

来自分类Dev

结合使用JSR-303和Spring的Validator为Spring Boot端点实现自定义验证逻辑

来自分类Dev

在Laravel中扩展Validator类

来自分类Dev

在Laravel中扩展Validator类

来自分类Dev

如果Spring Data Jpa和Hibernate中的@Id不是@GeneratedValue,则JSR303验证不会验证

来自分类Dev

如何清除Validator类中的输入字段?

来自分类Dev

在Spring控制器和Spring Webflow中具有可选属性的一致JSR-303验证?

来自分类Dev

如何针对SRP设计Validator类?

来自分类Dev

如何在服务层中处理Spring JPA版本

来自分类Dev

kotlin数据类+ bean验证jsr 303

来自分类Dev

注解中的Spring Boot JSR303消息代码被忽略

来自分类Dev

如何在ASP.Net Core的服务层的基类中获取当前User?

来自分类Dev

如何在@Configuration类中自动装配Spring注释的服务类?

来自分类Dev

如何在Laravel 4的Validator类中获得“ after:now”以正确响应英国日期?

来自分类Dev

如何在Spring MVC中实现控制器和服务层之间的正确交互

来自分类Dev

Spring MVC Controller JSR 303基本列表验证

来自分类Dev

Spring MVC Controller JSR 303基本列表验证

来自分类Dev

Spring + JSF2 + JSR 303 bean验证

来自分类Dev

基于封闭类类型的条件性JSR-303验证

来自分类Dev

如何在mongoDB中结合$ in和$ regex?

来自分类Dev

如何在wrapper类中合并两个spring boot微服务响应

来自分类Dev

如何在服务层使用Mongoose跳过和限制功能?

来自分类Dev

在同一个类中结合使用REST和SOAP服务?

来自分类Dev

针对新的Spring Validator类运行单元测试时,我不断收到“ NotReadablePropertyException”

来自分类Dev

如何结合使用Spring Data JPA QueryBuilder方法和具体的类+ DI?

来自分类Dev

如何结合使用Spring Data JPA QueryBuilder方法和具体的类+ DI?

来自分类Dev

在熊猫中结合CustomBusinessDay和BusinessHour类

来自分类Dev

如何使用Bean验证(JSR303)打破Bean和验证器之间的耦合?

来自分类Dev

在Spring Java中减少服务层和DAO

Related 相关文章

  1. 1

    如何将Spring Validator和JSR 303混合使用

  2. 2

    结合使用JSR-303和Spring的Validator为Spring Boot端点实现自定义验证逻辑

  3. 3

    在Laravel中扩展Validator类

  4. 4

    在Laravel中扩展Validator类

  5. 5

    如果Spring Data Jpa和Hibernate中的@Id不是@GeneratedValue,则JSR303验证不会验证

  6. 6

    如何清除Validator类中的输入字段?

  7. 7

    在Spring控制器和Spring Webflow中具有可选属性的一致JSR-303验证?

  8. 8

    如何针对SRP设计Validator类?

  9. 9

    如何在服务层中处理Spring JPA版本

  10. 10

    kotlin数据类+ bean验证jsr 303

  11. 11

    注解中的Spring Boot JSR303消息代码被忽略

  12. 12

    如何在ASP.Net Core的服务层的基类中获取当前User?

  13. 13

    如何在@Configuration类中自动装配Spring注释的服务类?

  14. 14

    如何在Laravel 4的Validator类中获得“ after:now”以正确响应英国日期?

  15. 15

    如何在Spring MVC中实现控制器和服务层之间的正确交互

  16. 16

    Spring MVC Controller JSR 303基本列表验证

  17. 17

    Spring MVC Controller JSR 303基本列表验证

  18. 18

    Spring + JSF2 + JSR 303 bean验证

  19. 19

    基于封闭类类型的条件性JSR-303验证

  20. 20

    如何在mongoDB中结合$ in和$ regex?

  21. 21

    如何在wrapper类中合并两个spring boot微服务响应

  22. 22

    如何在服务层使用Mongoose跳过和限制功能?

  23. 23

    在同一个类中结合使用REST和SOAP服务?

  24. 24

    针对新的Spring Validator类运行单元测试时,我不断收到“ NotReadablePropertyException”

  25. 25

    如何结合使用Spring Data JPA QueryBuilder方法和具体的类+ DI?

  26. 26

    如何结合使用Spring Data JPA QueryBuilder方法和具体的类+ DI?

  27. 27

    在熊猫中结合CustomBusinessDay和BusinessHour类

  28. 28

    如何使用Bean验证(JSR303)打破Bean和验证器之间的耦合?

  29. 29

    在Spring Java中减少服务层和DAO

热门标签

归档