我正在考虑将JSR-303与hibernate验证器一起使用。我们希望能够为每个客户提供不同的验证,或者有一组基本约束,并允许它们被覆盖。
我不确定最好的方法是什么。
对约束使用注释是不合适的,因为它们在模型中基本上是硬编码的。我知道我可以使用XML来外化验证(创建指定约束映射文件的META-INF / validation.xml)。但我不确定如何轻松地为多个客户配置这个。
我想我希望能够设置一个简单的属性,以便在部署时使用一组完全不同的约束映射文件。
有什么想法吗?
答案 0 :(得分:0)
您可以为每个客户创建一个ValidatorFactory
,您可以使用特定于客户的约束映射XML文件进行配置,如下所示:
ValidatorFactory validatorFactory = Validation
.byDefaultProvider()
.configure()
.addMapping(...) //input stream with an XML constraint mapping
.addMapping(...) //another input stream with an XML constraint mapping
.buildValidatorFactory();
当您使用Hibernate Validator时,您还可以使用programmatic constraint declaration的API创建单独配置的验证工厂。