我有一个使用Jersey2发布各种REST服务的Web应用程序。
在这个项目中,我使用javax.validation注释来验证各种输入。但是,我有一些自定义数据类型(Money,Percentage),我想在某些情况下提供最小和最大验证。
但是,如果我用@Min或@Max注释该字段,我会收到一条错误消息,表明没有验证器,这是预期的行为,因为我的对象是一个复杂的数据类型。
我已经成功实现了一个带有验证器的自定义注释,它提供了这个功能,但我更愿意重用现有的注释并为这种数据类型提供我自己的验证器,但我找不到任何关于如何执行此操作的文档。可能吗?如果是这样,我如何为我的数据类型注册自定义验证器?
可以为现有约束注释注册自己的验证器。您可以通过在META-INF/services/javax.validation.ConstraintValidator
文件中提供此类验证器的列表来实现此目的。这将使用Service Loader机制来查找约束验证器并将它们添加到验证引擎。有关更详细的说明,请查看下一篇文章 -
Adding custom constraint definitions via the Java service loader,以及“非标准类的使用标准约束”部分。