【发布时间】:2015-04-18 01:58:51
【问题描述】:
我正在考虑使用布尔逻辑和我的 bean 验证在与约束条件不够的情况下使用 Hibernate Validator。我发现可以通过使用@ConstraintComposition 注释作为described in the documentation 创建一个新注释来更改此默认行为。该文档提供了以下示例。
@ConstraintComposition(OR)
@Pattern(regexp = "[a-z]")
@Size(min = 2, max = 3)
@ReportAsSingleViolation
@Target({ METHOD, FIELD })
@Retention(RUNTIME)
@Constraint(validatedBy = { })
public @interface PatternOrSize {
String message() default "{org.hibernate.validator.referenceguide.chapter11." +
"booleancomposition.PatternOrSize.message}";
Class<?>[] groups() default { };
Class<? extends Payload>[] payload() default { };
}
使用这个@PatternOrSize 验证约束意味着输入字符串是或者小写或的大小在2到3之间。现在这引发了几个问题:
- 我相信必须创建一个新注释来更改默认布尔逻辑行为。它是否正确?如果可以在类字段中定义布尔逻辑,那就太好了,但可能不可能?
- 是否可以在不创建自定义验证器的情况下进一步自定义布尔逻辑行为,例如同时定义
AND和OR?我找不到任何表明这是可能的东西,但也许我错过了一些东西。 -
最重要的是:是否可以使
@Pattern和@Size约束的参数动态化?因为否则我想我将不得不为我需要的每个参数组合定义一个新的注释。定义一个新注解只是为了将参数更改为@Size似乎不可行,但可能有必要?
提前谢谢你。
【问题讨论】:
标签: java validation bean-validation hibernate-validator