java - Common Pojo - 基于父pojo的动态错误消息 - Spring验证

标签 java spring spring-boot spring-mvc spring-annotations

我有一个常见的pojo类帐户,在债权人和债务人之间共享,我正在尝试实现spring验证。

债务人类别

public class Debtor {

         @NotBlank(message = "debtor name is missing")
         @SerializedName("name")
         private String name = null;

         @Valid
         @NotNull(message = "debtor account should not be null")
         @SerializedName("account")
         private Account account = null;
      }

债权类别

public class Creditor {

     @NotBlank(message = "creditor name is missing")
     @SerializedName("name")
     private String name = null;

     @Valid
     @NotNull(message = "creditor account should not be null")
     @SerializedName("account")
     private Account account = null;
  }

账户类别

 public class Account{

     @NotBlank(message = "accountno is missing")
     @SerializedName("accountno")
     private String accountno= null;

     @NotBlank(message = "accountName is missing")
     @SerializedName("accountName")
     private String accountName = null;
  }

验证工作正常,我能够捕获并抛出 400 无效请求,但是,在 accountno 和 accountName 验证上,我想根据父 pojo 抛出特定消息,例如

“债务人帐号缺失”
“债权人帐号缺失”

如何通过 spring 验证、springboot 有效地实现这一点?

最佳答案

一种解决方案是创建 Spring 自定义 validator 。您将能够创建验证代码,并且不会使用特定字段的注释。您应该实现 Validator 接口(interface),然后在配置类中您需要重写 'configureValidatingRepositoryEventListener' 方法。

@Component
public class NameofClass implements Validator {

    @Override
    public boolean supports(Class<?> aClass) {
        return DomainClass.class.equals(aClass);
    }

    @Override
    public void validate(Object o, Errors errors) {
        //validation code...
        if (o instanceof DomainClass) {
             // do something...
        }
    }
}

关于java - Common Pojo - 基于父pojo的动态错误消息 - Spring验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57891583/

相关文章:

java - 二元运算符的错误操作数类型 '%'

Java : How to override a method and throw exception?

java - 如何为 web 应用程序创建客户端通知服务或者我应该使用观察者模式?

javascript - 为什么此字符编码问题只发生在特定系统上?

java - 是否可以从另一个应用程序(在单独的进程中启动)连接到 spring boot 嵌入式 ActiveMQ 实例?

Java : Cannot send POST request to backend with Angular 5

java - 归一化双 vector 不是单位长度到机器精度

java - 依赖注入(inject) : Scoping by region (Guice, Spring,随便)

mysql - spring上下文初始化时如何创建数据库

spring-boot - 禁用分布式跟踪以进行开发