问题标签 [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.

0 投票
4 回答
26527 浏览

java - 如何在 Spring Boot 中验证类型“java.lang.Boolean”

我有一个布尔字段,我想验证它只有“true”或“false”作为值(不带引号)。但是这个字段也允许“真”或“假”作为我想要限制的值(带引号)。

我尝试使用 @Pattern 注释来匹配这些值。但我有以下错误:

javax.validation.UnexpectedTypeException:HV000030:找不到约束“javax.validation.constraints.Pattern”验证类型“java.lang.Boolean”的验证器。检查“可重新启动”的配置

我的代码是:

我应该怎么办?有没有其他方法可以克服这个问题?提前致谢。

0 投票
1 回答
3941 浏览

java - 使用 ConstraintValidator 进行 Spring DTO 验证

我使用的 DTO 使用 javax.validation 注释进行了注释

例如

如果我必须使用 StudentDTO 的 ConstraintValidator 进行验证怎么办

0 投票
3 回答
2433 浏览

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 中。

0 投票
4 回答
3443 浏览

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:我去过其他声称可以解决问题的类似线程,实际上它们都没有。

0 投票
5 回答
4663 浏览

java - @Valid (javax.validation.Valid) 对于列表类型不是递归的

控制器:

这会触发@NotNullParent.name,但不会检查 Child.name。如何让它触发。我也试过List<@Valid Child> children;用注释来注释子类@Valid,不起作用。请帮忙。

parent = { "name": null }失败。名称不能为空。

child = { "name": null }作品。

0 投票
1 回答
437 浏览

jackson - Hibernate Validator 不验证带有约束注解的方法参数

我有一个 pojo,这对于多个服务很常见,并且每个服务对该对象都有不同的验证规则。因此,我在我的每个服务中扩展了该 pojo,并覆盖了一些设置器并在那些被覆盖的方法上抛出了约束验证。pojo 是通过 REST 调用从提交的 json 构建的。Jackson 是应该调用 setter 的库。

这是我的 REST 方法声明:

似乎验证不适用于杰克逊,因为我看到在其他方法validateParametersorg.hibernate.validator.internal.engine.ValidatorImpl调用的方法。

这就是我的ValidationConfiguration豆子的样子:

我还对请求参数进行了一些验证,效果很好。但是,它不适用于此设置器。

0 投票
1 回答
1989 浏览

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 构建方法还有一个约束,注释为:

如果有人可以帮助我,我将非常感激。不管怎么说,还是要谢谢你。

0 投票
2 回答
5490 浏览

java - 将参数从验证传递到休眠验证器中的自定义验证器

我正在尝试使用自定义验证器验证 bean。但是验证器需要从调用 validate 的方法传递给它的信息。有没有办法做到这一点?

我无法在初始化中传递它,因为它在创建 bean 时不可用。

要验证的 Bean

注解

自定义验证器

主要方法

如何将变量“whatIwantToPass”从主方法传递给 VehicleNameValidatorImpl。

0 投票
1 回答
2875 浏览

spring - Spring中路径变量的javax正则表达式验证

我对 bean 和请求参数进行了验证,但是,我的路径变量无法得到验证:

@PathVariable @Pattern(regexp = "[A-Za-z0-9]+") String protocol

当我提供路径 var 时,ab!ab它不会使用 400 状态代码使请求失败,而是让它与分配给参数的值一起传递。

我还在线验证了我的正则表达式,它是有效的,应该可以正常工作。

另外,我的休息控制器确实有@Validated注释。

我在这里想念什么?

================更新==============

我尝试了其他约束注释,但它们都不起作用,所以它必须与路径变量验证有关。但是什么??

0 投票
5 回答
7273 浏览

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.