0

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

我有一个带有字符串属性的表单。此属性不是必需的,但如果它包含某个值,则该值应为 10 位长度。所以我需要类似的东西:

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

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

4

1 回答 1

1

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

  • 使用@Pattern 约束并定义一个与空字符串和长度为 10 个字符的模式有关的模式。当然,对于不需要的情况,您会得到一个空字符串
  • 编写一个自定义约束,例如 @EmptyOrLength ,它可以满足您的需求
  • 尝试使用验证组并将每个约束分配给不同的组。然后,您需要一种方法来定位正确的验证组
  • 恢复到 Hibernate Validator 特定功能并使用约束的布尔组合 - http://docs.jboss.org/hibernate/stable/validator/reference/en-US/html_single/#d0e3701。你仍然需要一个自定义约束,但你可以使用@NotNull@Length的组合使用@ConstraintComposition(OR)
于 2013-02-13T11:02:55.320 回答