【问题标题】:How to do conditional validation in spring boot?如何在 Spring Boot 中进行条件验证?
【发布时间】:2018-10-05 02:49:04
【问题描述】:

我正在开发一个 Spring REST 应用程序。

我有一个 DTO

private String name;
@
private String nationality;
private String matchType;
private List<NC_Field> ncFields = new ArrayList();
// Getters and Setters

我有 3 张桌子

  1. 字段表
  2. 名称间隙表
  3. NC_Fields 表

【问题讨论】:

    标签: validation spring-boot bean-validation spring-rest


    【解决方案1】:

    您可以使用您想要的任何逻辑定义自定义验证器。 然后你可以为验证器创建一个自定义注解并在你的 DTO 中使用它,就像 @NotNull

    public class CustomValidator implements ConstraintValidator<MyObject, String> {
      .
      .
      .
    }
    

    --

    @Constraint(validatedBy = { CustomValidator.class })
    @Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER })
    @Retention(RetentionPolicy.RUNTIME)
    public @interface ContactInfo {
        String message() default "Invalid value";
    
        Class<?>[] groups() default {};
    
        Class<? extends Payload>[] payload() default {};
    }
    

    请参考此链接,例如:https://www.baeldung.com/spring-dynamic-dto-validation

    【讨论】:

    • 如何检查国籍是否是印度人,那么 PAN 是强制性的。否则不是。同样还有一些条件。
    • 当你实现 ConstraintValidator 时,你需要重写 validate 方法。这是您几乎可以编写整个逻辑的地方
    猜你喜欢
    • 2020-09-25
    • 2020-05-10
    • 2021-07-11
    • 2018-06-23
    • 2018-02-08
    • 2019-02-08
    • 1970-01-01
    • 1970-01-01
    • 2021-06-24
    相关资源
    最近更新 更多