将JAX-303(bean验证)注释与自定义类型一起使用

时间:2018-04-05 07:56:51

标签: java jersey-2.0 bean-validation

我有一个使用Jersey2发布各种REST服务的Web应用程序。

在这个项目中,我使用javax.validation注释来验证各种输入。但是,我有一些自定义数据类型(Money,Percentage),我想在某些情况下提供最小和最大验证。

但是,如果我用@Min或@Max注释该字段,我会收到一条错误消息,表明没有验证器,这是预期的行为,因为我的对象是一个复杂的数据类型。

我已经使用提供此功能的验证器成功实现了自定义注释,但我更愿意重用现有注释并为此数据类型提供我自己的验证器,但我找不到有关如何执行此操作的任何文档。可能吗?如果是这样,我如何为我的数据类型注册自定义验证器?

1 个答案:

答案 0 :(得分:0)

可以为现有约束注释注册自己的验证器。您可以通过在META-INF/services/javax.validation.ConstraintValidator文件中提供此类验证器的列表来实现此目的。这将使用Service Loader机制来查找约束验证器并将它们添加到验证引擎。有关更详细的说明,请查看下一篇文章 - Adding custom constraint definitions via the Java service loader和“非标准类的使用标准约束”部分。