我有一个常见的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/