Lui*_*uis 4 java validation constraints option-type
大家好,我正在尝试对 YAML 进行验证
\n- name: campo\n in: query\n schema:\n type: string\n pattern: '[S|N]' #pattern\n maxLength: 1\nRun Code Online (Sandbox Code Playgroud)\n使用 Maven Spring Boot 和 delegate。在 RestController 上,我添加了注释@Validated,并且能够验证 required=true 字段,但如果字段不是必需的,根据架构设计,参数将为Optional<String>。为此java.util.Optional,尝试测试和验证,抛出标题错误:
{\n "timestamp": "2020-10-21T07:50:18.651+0000",\n "status": 500,\n "error": "Internal Server Error",\n "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'",\n "path": "/%7BbasePath%7D/microservicio/metodo"\n}\nRun Code Online (Sandbox Code Playgroud)\n\xc2\xbf有办法解决此问题以Optional<String>正确处理此验证吗?如果可以在 YAML + 验证(@Valid 和 @Validated)上完成,我们不想在 Java 上编写所有验证代码。
编辑:验证 @Size 和其他内容是使用开放 api 版本 3.0.3 从 YAML 生成的
\n你应该写:(Optional<@Size String>这将检查可选中字符串的大小)而不是@Size Optional<String>(它应该检查可选的大小,这是没有意义的)。
请参阅Hibernate 验证器:使用java.util.Optional:
package org.hibernate.validator.referenceguide.chapter02.containerelement.optional;
public class Car {
private Optional<@MinTowingCapacity(1000) Integer> towingCapacity = Optional.empty();
//...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3069 次 |
| 最近记录: |