spring form error tag:检查特定错误(如果不存在not null,则仅显示无效)

时间:2012-01-24 07:19:32

标签: spring-mvc java-ee-6 bean-validation

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

1 个答案:

答案 0 :(得分:0)

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

  • 一个用于模式,接受null,
  • 和第二个不为空。

默认情况下,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(我没有尝试过,但我希望它有效)