如果两个或多个注释满足同一字段上的条件,则 Javax 验证不稳定

Javax Validation is not stable if two or more annotation satisfies the condition on same field

当我应用两个验证注释并且在某些特定场景中都检查相同的条件时,我发现了一个问题,javax 验证输出不稳定。这是代码示例:

@NotBlank(message = "Date Missing")
@ValidDate(message = "Invalid Date")
private String date;

在上面的代码中,ValidDate 是一个自定义注解,它检查给定日期是否有效且不为空,NotBlank 检查是否为空,是否为空。

因此,如果日期为空,两者都返回 true 并且消息响应在日期缺失和无效日期之间切换

有什么方法可以停止这种切换并仅对空情况使用 NotBlank 吗?

这是因为默认情况下不保证执行 javax 验证的顺序。因此,无论先执行什么都会抛出错误。使用 @GroupSequence 进行排序

另一种方法是同时检查 Not Blank 并在您的自定义注释 ValidDate 中抛出适当的错误并从 属性 中删除 @NotBlank 注释。