JSR303Bean验证包含一些现成的约束,但也允许定义自定义约束。
我有一种感觉,对于许多没有随JSR实现一起提供的项目来说,有很多共同的约束。
所以我的问题是:是否有一个(值得信赖的)库包含commons jsr 303(Bean验证)约束?
自2017年以来,Java Bean Validation Extension(jbvext)库除其他外,还提供了@Before
、@Before
和@Password
注释,以满足OP的一些愿望。
⚠虽然这个库认为null
值是失败的,但是Bean验证规范建议null值是有效的。
我得出了同样的结论,即没有这样的图书馆。因此,我决定分享我的一组常见约束及其验证器:https://github.com/malkusch/validation
我不知道有一个专用的约束库,但是JSR 303参考实现HiberNate Validator提供了几个额外的约束,例如@Email
,@ScriptAssert
,@URL
等(免责声明:我正在为HiberNate Validator做出贡献)。
如果您对其他约束有其他想法或要求,可以在我们的JIRA实例中创建特性请求。
问题内容: 说我有以下简单的Java bean: JSR 303中是否存在一种机制来创建自定义验证器,以验证startDate必须在endDate之前的约束? 在我看来,这是一个常见的用例,但是我找不到这种多属性关系约束的任何示例。 问题答案: 我可以想到一些尝试的方法。 您可以使用适当的验证器创建类型本身的目标: 您可以将日期范围封装为一种类型,并验证以下内容: 您可以添加执行检查的简单属性:
问题内容: 我想对Bean验证有一个限制,但这不是标准提供的。如果我要使用JPA ,则不会有独特的验证和错误报告机制。 有没有一种方法可以定义为Bean验证约束并将其与JPA结合使用,例如,JPA创建具有唯一约束的列并检查值是否唯一? 问题答案: 除非获得整个表的锁 ,否则基本上不可能使用SQL查询来检查唯一性(任何并发事务都可以在手动检查之后但在提交正在进行的事务之前修改数据)。换句话说,不可能
我想让JavaBean验证约束可以通过Spring进行配置,也可以使用属性。例如: 我还没能把这个应用到工作中,或者找到很多关于这个的文档。 这样的事情可能吗?我知道消息在Validationmessages中是可配置的。属性文件,所以我希望约束值也可以有类似的结果。
编写自定义约束时,一个验证器实现可以验证多个注释。例如,我有几个注释,它们规定了不同的@size注释,但我希望它们都指向同一个验证器类,该类执行一些全局检查,即所有注释都必须与某个正则表达式匹配。据我所知,该实现采用了一种注释类型。 一个注释 验证器
我想从我的应用程序中提取DTO以将它们作为jar提供给层应用程序。 但我使用了Bean验证,所以DTO使用自定义约束进行注释。这种自定义注释对验证实现具有依赖性(链接)。 因此,我的DTO模块依赖于注释,而注释依赖于验证器,验证器依赖于DAO,然后是完整的核心应用程序。 有没有办法打破这种依赖循环?提供DTO jar而不依赖(或只提供bean验证API)的良好实践是什么? 谢谢
我按照这个教程https://spring framework . guru/spring-boot-restful-API-documentation-with-swagger-2/生成了一个swagger文档。它可以工作,但是当我试图在bean中添加一些验证时,我在文档中找不到信息: 带有验证注释的我的实体: 这里,https://github.com/springfox/springfox/