HV000030:找不到约束 'javax.validation.constraints.Size' 验证类型 'java.util.Optional<java.lang.String>' 的验证器
HV000030: No validator could be found for constraint 'javax.validation.constraints.Size' validating type 'java.util.Optional<java.lang.String>'
大家好,我正在尝试对 YAML 进行验证
- name: campo
in: query
schema:
type: string
pattern: '[S|N]' #pattern
maxLength: 1
使用 maven spring 引导和委托。在 RestController 上,我添加了注释 @Validated
并且我能够验证 required=true 字段,但如果字段不是必需的,根据架构设计,参数将为 Optional<String>
。对于这个java.util.Optional
,试图测试和验证,抛出标题错误:
{
"timestamp": "2020-10-21T07:50:18.651+0000",
"status": 500,
"error": "Internal Server Error",
"message": "HV000030: No validator could be found for constraint 'javax.validation.constraints.Size' validating type 'java.util.Optional<java.lang.String>'. Check configuration for 'metodo.campo'",
"path": "/%7BbasePath%7D/microservicio/metodo"
}
¿ 无论如何要解决此问题以正确处理此 Optional<String>
验证?如果可以在 YAML + 验证(@Valid 和 @Validated)上完成,我们不想在 Java 上编写所有验证代码。
编辑:验证@Size 和其他是从 YAML 生成的,打开 api 版本 3.0.3
你应该写:Optional<@Size String>
(它会检查可选中字符串的大小)而不是@Size Optional<String>
(它应该检查可选的大小,这是没有意义的) .
参见Hibernate Validator: With java.util.Optional
:
package org.hibernate.validator.referenceguide.chapter02.containerelement.optional;
public class Car {
private Optional<@MinTowingCapacity(1000) Integer> towingCapacity = Optional.empty();
//...
}
较新版本Jakarta Bean Validation 2.0 newly supports Optional
validation as of August 2019. You can find this information out at their changelog summary 2. What’s new:
Support for java.util.Optional
截至今年 9 月,唯一经过认证的实施是 Hibernate Validator 6.0.17.Final
。
考虑升级,否则您将不得不忽略尺寸验证并手动执行。
大家好,我正在尝试对 YAML 进行验证
- name: campo
in: query
schema:
type: string
pattern: '[S|N]' #pattern
maxLength: 1
使用 maven spring 引导和委托。在 RestController 上,我添加了注释 @Validated
并且我能够验证 required=true 字段,但如果字段不是必需的,根据架构设计,参数将为 Optional<String>
。对于这个java.util.Optional
,试图测试和验证,抛出标题错误:
{
"timestamp": "2020-10-21T07:50:18.651+0000",
"status": 500,
"error": "Internal Server Error",
"message": "HV000030: No validator could be found for constraint 'javax.validation.constraints.Size' validating type 'java.util.Optional<java.lang.String>'. Check configuration for 'metodo.campo'",
"path": "/%7BbasePath%7D/microservicio/metodo"
}
¿ 无论如何要解决此问题以正确处理此 Optional<String>
验证?如果可以在 YAML + 验证(@Valid 和 @Validated)上完成,我们不想在 Java 上编写所有验证代码。
编辑:验证@Size 和其他是从 YAML 生成的,打开 api 版本 3.0.3
你应该写:Optional<@Size String>
(它会检查可选中字符串的大小)而不是@Size Optional<String>
(它应该检查可选的大小,这是没有意义的) .
参见Hibernate Validator: With java.util.Optional
:
package org.hibernate.validator.referenceguide.chapter02.containerelement.optional;
public class Car {
private Optional<@MinTowingCapacity(1000) Integer> towingCapacity = Optional.empty();
//...
}
较新版本Jakarta Bean Validation 2.0 newly supports Optional
validation as of August 2019. You can find this information out at their changelog summary 2. What’s new:
Support for
java.util.Optional
截至今年 9 月,唯一经过认证的实施是 Hibernate Validator 6.0.17.Final
。
考虑升级,否则您将不得不忽略尺寸验证并手动执行。