java - 针对一个属性的基于上下文的 Java Bean 验证消息

标签 java bean-validation

假设我有一个像这样的简单 DTO:

public class IdHolder {

    @NotNull
    private Long id;

    // ...
}

public class Transport {

    @Valid @NotNull(message = "{messages.fromLocationRequired}")
    private IdHolder fromLocation;

    @Valid @NotNull(message = "{messages.toLocationRequired}")
    private IdHolder toLocation;

    // ...
}

在以下情况下我会收到不错的消息:

  • fromLocation=null 导致“您必须输入发件人位置”
  • toLocation=null 结果是“您必须输入接收者的位置”

但如果对象不为 null 但其对应的 id 为 null,我也想获取这些消息。

Java Bean Validation 中有没有优雅的方法来配置以下条件:

  • fromLocation.id=null 导致“您必须输入发件人位置”
  • toLocation.id=null 导致“您必须输入接收者位置”

最佳答案

不,在 Bean Validation 和 Hibernate Validator 中都没有办法做到这一点。约束 validator (默认情况下)没有任何有关当前路径的上下文信息。

关于java - 针对一个属性的基于上下文的 Java Bean 验证消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32765534/

相关文章:

java - Android Firebase 数据库路径无效

java正则表达式转换

java - 在Java中求解三个变量的多项式以获得半径

java - 特定 Java EJB 约束违规错误。为什么?

java - 在 bean 验证消息中插入特定于验证的参数

没有 Hibernate validator 的 Javax 注解验证 JUnit

java - !(a==b) 和 a!=b 的区别

java - Hibernate 使用 Criteria setMaxResults 给出 SQLGrammarException

java - java中的这些注释会抛出什么异常?

java - 如何手动触发Spring验证?