【发布时间】:2013-11-06 11:26:30
【问题描述】:
在 JSR-303(Bean Validation)中,您需要为您编写的每个约束验证器定义一个特殊的注解。如果您正在创建可重用的约束验证器(如标准的@Max、@NotNull 等),这非常有意义。
然而,在现实生活中,每个经过验证的 bean 都需要自己的验证器来进行更复杂的业务验证。使用 vanilla JSR-303 实现,您必须为每个验证器创建单独的注释。这迫使开发人员编写一次性注释,并使 bean 验证的整体概念看起来很愚蠢。如果 JSR-303 提供某种委托约束注释,则可以避免一次性注释的必要性:@ValidateBy(validator=my.custom.Validator)。
现在我的问题:
- 为什么 JSR-303 不包含这样的用例?
- 是否有任何与此相关的官方讨论(我找不到任何东西)?
- 是否有任何 JSR-303 库提供此类功能(不是说很难实现)?
更新 1 - 特定用例(导致此问题)
我们有一个适度的企业应用程序,具有相当丰富的业务模型(40 个可管理实体、20 个可嵌入实体、25 个只读实体)。这意味着我们有很多 HTML 表单。每个表单都由带有 JSR-303 注释的指定表单 bean(70 个表单 bean)支持。某些表单需要自定义非平凡验证(例如,如果交付类型是电子邮件,则必须设置联系人电子邮件,...)。使用 JSR-303,我们有 33 个特定于 form-bean 的验证器,带有 33 个(不必要的一次性)注释。
鉴于 Java 类(实体、控制器、DAO、DTO、映射器、验证器等)的数量……现在这产生了 800 个.java 文件)我不喜欢有任何样板代码。
【问题讨论】:
-
好问题,也许他们认为其他框架(如JSF)提供的验证就足够了。
标签: java validation bean-validation