问题标签 [javax.validation]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 如何在 Spring Boot 中验证类型“java.lang.Boolean”
我有一个布尔字段,我想验证它只有“true”或“false”作为值(不带引号)。但是这个字段也允许“真”或“假”作为我想要限制的值(带引号)。
我尝试使用 @Pattern 注释来匹配这些值。但我有以下错误:
javax.validation.UnexpectedTypeException:HV000030:找不到约束“javax.validation.constraints.Pattern”验证类型“java.lang.Boolean”的验证器。检查“可重新启动”的配置
我的代码是:
我应该怎么办?有没有其他方法可以克服这个问题?提前致谢。
java - 使用 ConstraintValidator 进行 Spring DTO 验证
我使用的 DTO 使用 javax.validation 注释进行了注释
例如
如果我必须使用 StudentDTO 的 ConstraintValidator 进行验证怎么办
spring-boot - Spring-Boot UnitTest:ConstraintValidator 中的@Value
我目前正在提供覆盖 - 通过 MockMVC 请求调用测试我的 DTO 的验证。我最近在我的注册约束验证器中引入了一个新字段,supportedSpecializations,我从 application.properties 中注入了值,以便于维护和扩展。请参阅下面的代码片段:
由于 @Value 注释的定义属性未注入该字段,单元测试现在失败。我不确定ReflectionTestUtils是否对我有帮助,因此非常感谢有关如何在 UnitTests 中注入所需值的任何建议。
Spring 版本是 2.1.0 我目前正在使用以下代码段进行测试:
我尝试使用@RunWith(SpringRunner.class)和@SpringBootTest(classes = Application.class)注释我的 Test 类,但由于 @Value 未解决,验证测试仍然失败。我可能错了,但我认为 ConstraintValidator 的实例是在我们到达 restController 之前创建的,所以 MockMVC perform(...)调用不能简单地确保验证器中的适当 @Value 被注入到 supportedSpecializations 中。
java - 如何从 ConstraintViolationException 中获取查询参数名称
我有一个服务方法:
如果 API 的调用者没有为page-number
查询参数提交正确的值,javax.ConstraintViolationexception
则会引发。异常消息的内容如下:
getWhatever.pageNumber must be equal or greater than 0
在响应正文中,我希望收到此消息:
page-number must be equal or greater than 0
我希望我的消息具有查询参数的名称,而不是参数的名称。恕我直言,包括参数的名称正在公开实现细节。
问题是,我找不到带有查询参数名称的对象。好像ConstraintViolationException
没有啊
我在 spring-boot 中运行我的应用程序。
任何帮助,将不胜感激。
PS:我去过其他声称可以解决问题的类似线程,实际上它们都没有。
java - @Valid (javax.validation.Valid) 对于列表类型不是递归的
控制器:
这会触发@NotNull
Parent.name,但不会检查 Child.name。如何让它触发。我也试过List<@Valid Child> children;
用注释来注释子类@Valid
,不起作用。请帮忙。
parent = { "name": null }
失败。名称不能为空。
child = { "name": null }
作品。
jackson - Hibernate Validator 不验证带有约束注解的方法参数
我有一个 pojo,这对于多个服务很常见,并且每个服务对该对象都有不同的验证规则。因此,我在我的每个服务中扩展了该 pojo,并覆盖了一些设置器并在那些被覆盖的方法上抛出了约束验证。pojo 是通过 REST 调用从提交的 json 构建的。Jackson 是应该调用 setter 的库。
这是我的 REST 方法声明:
似乎验证不适用于杰克逊,因为我看到在其他方法validateParameters
上org.hibernate.validator.internal.engine.ValidatorImpl
调用的方法。
这就是我的ValidationConfiguration
豆子的样子:
我还对请求参数进行了一些验证,效果很好。但是,它不适用于此设置器。
java - javax.validation.ConstraintDeclarationException:HV000131。分层对象中的级联验证
我有下一个层次结构:
B 类具有属性调用语言代码,仅当服务具有 @Validated({RequiringLanguageCode.class}) 时才应使用 @NotEmpty 进行验证
现在,D 是具有应验证为 NotNull 的 C 属性以及 C 类内部的值的基类。
C 类包含两个验证为@NotEmpty 的字符串:
当尝试使用 mockito 进行测试时,如果令牌值(value1 和 value2)为空,则不会验证 C 类的值。
有人可以帮助我吗? 有人知道发生了什么吗?
测试如下:
AAssembler 被注释为 @Validated({RequiringLanguageCode.class})
我启动 IllegalArgumentException 而不是 ConstraintViolationException 的原因超出了这个问题的范围。我发现约束违规,而是抛出 IllegalArgumentException。
Assembler 构建方法还有一个约束,注释为:
如果有人可以帮助我,我将非常感激。不管怎么说,还是要谢谢你。
java - 将参数从验证传递到休眠验证器中的自定义验证器
我正在尝试使用自定义验证器验证 bean。但是验证器需要从调用 validate 的方法传递给它的信息。有没有办法做到这一点?
我无法在初始化中传递它,因为它在创建 bean 时不可用。
要验证的 Bean
注解
自定义验证器
主要方法
如何将变量“whatIwantToPass”从主方法传递给 VehicleNameValidatorImpl。
spring - Spring中路径变量的javax正则表达式验证
我对 bean 和请求参数进行了验证,但是,我的路径变量无法得到验证:
@PathVariable @Pattern(regexp = "[A-Za-z0-9]+") String protocol
当我提供路径 var 时,ab!ab
它不会使用 400 状态代码使请求失败,而是让它与分配给参数的值一起传递。
我还在线验证了我的正则表达式,它是有效的,应该可以正常工作。
另外,我的休息控制器确实有@Validated
注释。
我在这里想念什么?
================更新==============
我尝试了其他约束注释,但它们都不起作用,所以它必须与路径变量验证有关。但是什么??
java - Annotation @NotEmpty doesn't check if String is null
I'm trying to validate some DTOs with javax.validation, but it seems that the annotation @NotEmpty doesn't check of the parameter is null.
Here are my clases:
Person.class
Job.class
When I try to pass the following JUnit testS I get failures:
And here's the method that validates the DTOs:
I was under the impression that @NotEmpty first checked if the parameter was null, ¿am I wrong?
PD: Here are the dependencies I use:
It seems the problem was with the dependencies, for some reason in the class path the jar version of validation-api was wrong I simply deleted all the jars in the class path and added them again and the error disappears.