Spring mvc spring表单错误标记:检查特定错误(例如,仅当不存在not null时显示无效)

Spring mvc spring表单错误标记:检查特定错误(例如,仅当不存在not null时显示无效),spring-mvc,java-ee-6,bean-validation,Spring Mvc,Java Ee 6,Bean Validation,因此,我有一个字符串,我需要检查我使用模式的有效格式,以及根据我使用自定义验证器的一些业务规则,输入的值是否有效。现在,如果只有在前者未发生的情况下才显示与后者相关的错误消息,则客户更愿意这样做。但据我所知,没有办法作出这种区分。 或者有人能想出一种方法来做到这一点吗?诀窍是:有两个不同的约束(注释) 一个用于接受null的模式 一秒钟表示不为空 默认情况下,javax.validation.constraints.Pattern“validator”接受null 接受字符串空元素被视为有效

因此,我有一个字符串,我需要检查我使用模式的有效格式,以及根据我使用自定义验证器的一些业务规则,输入的值是否有效。现在,如果只有在前者未发生的情况下才显示与后者相关的错误消息,则客户更愿意这样做。但据我所知,没有办法作出这种区分。
或者有人能想出一种方法来做到这一点吗?

诀窍是:有两个不同的约束(注释)

  • 一个用于接受null的模式
  • 一秒钟表示不为空
默认情况下,
javax.validation.constraints.Pattern
“validator”接受null

接受字符串<代码>空元素被视为有效。 (javax.validation.constraints.Pattern javadoc)

因此,您最终需要做的是:

@NotNull(message="{validation.notNull}")
@Pattern(pattern="123" message="{validation.notPattern}")
String myString;

添加:

(评论)


这并不是我想要的行为,因为我想重用bean对象,但是每个页面的条件都不一样杰克·尼克尔斯5分钟前

在这种情况下,您可以使用所谓的
(请参阅--这里还有一个示例)。将默认组用于
@Pattern
,将另一组用于
@NotNull
。现在,您可以根据为验证指定的组启用或禁用验证规则

validator.validate(myObject, Default.class);
validator.validate(myObject, MyGroup.class);

还有一个问题:在Spring3.0中,您不能指定要用于自动验证过程的组。但在3.1中,您可以根据该功能请求(我没有尝试过,但我希望它能起作用)

这并不是真正想要的行为,因为我想重用bean对象,但每个页面的条件都不一样。@Jack Nickels:见我的扩展答案