用于验证的@NotRquired注释的类似物

时间:2013-02-13 00:15:37

标签: spring hibernate-validator

我使用Hibernate Validation 4.3.1.Final和Spring 3.2.0.RELEASE

我有一个带字符串属性的表单。此属性不是必需的,但如果它包含某个值,则此值应精确为10位数。 所以我需要像:

@NotRquired
@Length(min = 10, max = 10)

但是没有像@NotRquired那样的注释。我应该如何为这种情况编写验证?

1 个答案:

答案 0 :(得分:1)

在这种情况下, @NotRquired 注释不会有帮助,因为会评估所有定义的约束。因此,在未指定值的情况下, @Length 仍将被验证并失败。你可以做几件事:\

  • 使用@Pattern约束并定义一个重要的空字符串和长度为10个字符的模式。当然,如果不是必需的话,你会得到一个空字符串
  • 编写自定义约束,例如@EmptyOrLength,它可以执行您想要的操作
  • 尝试使用验证组并将每个约束分配给不同的组。然后,您需要一种方法来定位正确的验证组
  • 恢复为Hibernate Validator特定功能,并使用约束的布尔组合 - http://docs.jboss.org/hibernate/stable/validator/reference/en-US/html_single/#d0e3701。您仍然需要自定义约束,但是您可以使用 @ConstraintComposition(OR) @NotNull 和 @Length 的组合>