如果两个或多个注释满足同一字段上的条件,则 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
注释。
当我应用两个验证注释并且在某些特定场景中都检查相同的条件时,我发现了一个问题,javax 验证输出不稳定。这是代码示例:
@NotBlank(message = "Date Missing")
@ValidDate(message = "Invalid Date")
private String date;
在上面的代码中,ValidDate
是一个自定义注解,它检查给定日期是否有效且不为空,NotBlank
检查是否为空,是否为空。
因此,如果日期为空,两者都返回 true 并且消息响应在日期缺失和无效日期之间切换
有什么方法可以停止这种切换并仅对空情况使用 NotBlank 吗?
这是因为默认情况下不保证执行 javax 验证的顺序。因此,无论先执行什么都会抛出错误。使用 @GroupSequence
进行排序
另一种方法是同时检查 Not Blank
并在您的自定义注释 ValidDate
中抛出适当的错误并从 属性 中删除 @NotBlank
注释。