所以我有一个字符串我需要检查我使用模式的有效格式,以及根据我使用自定义验证器的一些业务规则输入的值是否有效。现在,如果仅在前者未发生的情况下显示与后者相关联的错误消息,则客户会更喜欢它。但据我所知,没有办法做出这种区分。 或者任何人都可以想到这样做的方法吗?
答案 0 :(得分:0)
诀窍是:有两个不同的约束(注释),
默认情况下,javax.validation.constraints.Pattern
“验证程序”接受null。
接受字符串。
null
元素被视为有效。 (javax.validation.constraints.Pattern javadoc)
所以你最终需要做的是:
@NotNull(message="{validation.notNull}")
@Pattern(pattern="123" message="{validation.notPattern}")
String myString;
<强>加了:强>
(注释)
由于我想重用bean对象,但每个页面的条件不一样,所以并不是理想的行为。 - Jack Nickels 5分钟前
在这种情况下,您可以使用所谓的groups
(请参阅JSR303 Bean Validation Spec, Chapter 4.1.2 groups - 还有一个示例)。使用@Pattern
的默认组和@NotNull
的其他组。现在,您可以根据为验证指定的组启用或禁用验证规则。
validator.validate(myObject, Default.class);
validator.validate(myObject, MyGroup.class);
还有一个问题:在Spring 3.0中,您无法指定要用于自动验证过程的组。但在3.1中你可以根据特征请求SPR-6373(我没有尝试过,但我希望它有效)