Bean Validation Groupinheritance不适用于Group Sequence Provider
我目前正致力于实现一个存储包含国内和国内地址的联系信息的应用程序,但也可以禁用地址。
我试图定义三个validation组:一个用于始终validation信息的超级组和两个用于不同地址状态的子类。
public interface ContactValidation {} public interface DomesticValidation extends ContactValidation {} public interface ForeignValidation extends ContactValidation {}
然后我在联系人类上定义了一个@GroupSequenceProvider。
public class ContactGroupSequenceProvider implements DefaultGroupSequenceProvider { @Override public List<Class> getValidationGroups(Contact contact) { List<Class> defaultGroupSequence = new ArrayList<Class>(); if(contact.getIsForeign()){ defaultGroupSequence.add(Contact.ForeignValidation.class); } else { defaultGroupSequence.add(Contact.DomesticValidation.class); } //TODO: Add Address Disabled Case defaultGroupSequence.add(Contact.class); //Get a GroupDefinitionException without this line return defaultGroupSequence; }
当我使用地址validation运行程序时,标记为groups = Contact.ContactValidation.class的字段即使它是地址validation的超类,也不会被validation。
我需要此应用程序一起validation,因此使用的不必修复错误,提交并获取新错误。
我也想避免使用总是经过validation的字段的解决方案。
@NotBlank(groups={DomesticValidation.class,ForeignValidation.class ,ContactValidation.class}) private String fullContactName;
任何建议赞赏!
如果您返回其中一个子类,我还希望validation标记为ContactValidation
的约束。 这似乎是Hibernate Validator中的一个错误,所以你能在我们的问题跟踪器中打开一张票吗?
作为解决方法,您可能会尝试将ContactValidation
明确添加到您返回的列表中。
- JSR303 – 应用按顺序定义的所有validation组
- Spring MVC – REST服务中bean列表上的@Valid
- JPA – 找不到类型为enum的validation器
- Autowired Repository在Custom Constraint Validator中为空
- Hibernate Validator – @Length – 如何为min和max指定单独的消息?
- Resteasy Beanvalidation未被调用
- unit testing的良好模式形成了在Spring MVC中具有基于注释的validation的bean
- beanvalidation默认参数的顺序?
- Beanvalidation组序列不起作用