【发布时间】:2019-08-17 17:21:35
【问题描述】:
我正在创建一个 Spring-Boot 微服务 REST API,它需要 @RequestParam 类型为 List<String>。如何验证列表是否包含最小值和最大值?
到目前为止,我已经尝试使用 @Size(min=1, max=2),它应该也支持集合 (javax.validation.constraints.Size)。
我还尝试添加@Valid 和BindingResult 参数以及@Size 注释,但没有成功。
我更喜欢使用类似于使用@Size(min=1, max=2) 的第一个示例的解决方案,它更紧凑和整洁。这是针对 Spring-Boot 2.1.2.RELEASE 的。
@RestController
public class MyApi {
@GetMapping(value = "/myApi", produces = { APPLICATION_JSON_VALUE })
public ResponseEntity<List<MyObject>> getSomething(@Valid @RequestParam(value = "programEndTime", required = false) @Size(min = 1, max = 2) List<String> programEndTime, BindingResult result) {
if (result.hasErrors()) {
System.out.println("Error");
} else {
System.out.println("OK");
}
}
}
我希望到达System.out.println("Error") 行,但实际上已跳过。
【问题讨论】:
-
您的约束是一个逻辑错误,
@RequestParam(required=false)和@Size(min=1)放在一起没有意义。 -
当然可以。一方面这不是强制性参数,但另一方面,如果提供,它应该遵守大小限制。
标签: java spring-boot spring-web spring-validator