Java Beanvalidation:具有类级别约束的GroupSequence
我有一个bean类,有多个(自定义)内部约束和一个类级约束。 我想在类级别约束之前validation内部约束。 代码如下所示:
@GroupSequence({ Inner.class, NewSlotBean.class }) @TotalBeanValid(groups = NewSlotBean.class) public class NewSlotBean { @DayMonthYearString(groups = Inner.class) private String slotDay; @TimeString(groups = Inner.class) private String slotBegin; @LengthString(groups = Inner.class) private String slotLength; }
( Inner
只是一个位于某处的空接口)。
但是,当我尝试运行它时,类级别约束根本没有得到validation。 当我尝试定义GroupSequence时
@GroupSequence({ Inner.class, Outer.class })
(使用Outer
是一个随机接口),我得到了exception:
javax.validation.GroupDefinitionException: ...*.beans.NewSlotBean must be part of the redefined default group sequence.
s / o是否知道如何确保在内部约束之后validation类级约束? (这似乎不是默认的!我有一段时间后突然出现的随机问题。)
尝试这个:
@GroupSequence({ Inner.class, NewSlotBean.class }) @TotalBeanValid(groups = Default.class) public class NewSlotBean { @DayMonthYearString(groups = Inner.class) private String slotDay; @TimeString(groups = Inner.class) private String slotBegin; @LengthString(groups = Inner.class) private String slotLength; }
根据规范, NewSlotBean只是默认组的替身。 另请参见Bean Validation规范的第3.4.3节:
由于序列不能具有循环依赖性,因此在序列声明中使用Default不是一种选择。 托管在类A上并且属于默认组的约束(默认或显式)隐式属于组A.
在类A上定义的序列(即重新定义类的默认组)必须包含组A.换句话说,类上托管的默认约束必须是序列定义的一部分。 如果重新定义类A的Default组的@GroupSequence不包含组A,则在Constraint声明和validation过程validation类或请求其元数据时会引发GroupDefinitionException。
- Hibernatevalidation失败时出现意外的UnsupportedOperationException
- ValidationMessages.properties文件之间的冲突
- 有没有办法从Bean Validation字段级ConstraintValidator中访问目标bean?
- 是否有使用带注释的方法参数启用JSR 303 Bean Validation的标准方法
- 如何为List创建ConstraintValidator
- 如何在JBoss 6.4中禁用javax.validation.api
- junit测试中的spring-data-jpa beanvalidation
- 如何使用Spring MVC JSR-303 Validator将不同的模型类validation为一个表单
- Jersey / JAX-RS资源方法输入beanvalidation