我有一个 Spring Web 应用程序,它使用 hibernate 验证器进行验证。我有位于不同项目中的约束注释。我需要在我的 Spring 项目中拥有针对这些约束的验证器,因为我需要一些服务来执行验证。所以情况是:我无法将约束验证器放在 @Constraint(validatedBy = MyConstraintValidator.class) 中,因为验证器位于不同的项目中,我无法添加依赖项,因为这会创建循环依赖项,而这不是我们的方式想要它。
我注意到 javax.constraints 没有指定验证器,它只是 @Constraint(validatedBy= {})。
但休眠验证器仍然知道如何验证它们。
有没有办法告诉我的休眠验证器如何验证我的约束,而无需在约束中指定约束验证器?
我希望能够验证这个约束:
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
@Constraint(validatedBy = {})
public @interface OneOf {
String message() default "{OneOf}";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
}
Thanks!
The javax.validation.constraints
将验证器留给实现。 Hibernate 为这些约束提供了验证器,并在引导时注册它们。
您可以通过 XML 设置验证器,而无需使用@Constraint(validatedBy = { })
。但是,这通常用于添加或替换为您自己的验证器。我不确定它将如何帮助您,因为您仍然需要引用约束验证器。
使用 XML 约束定义的示例:
<constraint-definition annotation="org.mycompany.CheckCase">
<validated-by include-existing-validators="false">
<value>org.mycompany.CheckCaseValidator</value>
</validated-by>
</constraint-definition>
See: 通过 XML 配置 http://docs.jboss.org/hibernate/validator/5.1/reference/en-US/html_single/#chapter-xml-configuration
即将发布的 5.2 版本提供了更多方法,例如使用服务加载器或实现ConstraintDefinitionContributor
. See: 提供约束定义 http://docs.jboss.org/hibernate/validator/5.2/reference/en-US/html_single/#section-constraint-definition-contribution
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)