javax.validation.constraints。@ Max不能用作请求参数

时间:2019-04-30 21:25:45

标签: spring spring-boot validation request max

试图为大小请求参数添加@Max验证。但是,我输入的任何值似乎都是有效的。

Spring Boot应用程序中的一种简单控制器方法。

    @GetMapping("/all")
public String getAll(@RequestParam @Max(value=20, message = "should be less than 20") int sizes) {
    if (sizes > 20) {
        return "Pass but not valid";
    }
    return "Valid";
}

当请求参数大小为21时,我获得通过但无效但错误消息 http://localhost:8080/all?sizes=21

有什么建议吗?谢谢

2 个答案:

答案 0 :(得分:0)

您在班级上方放置@Validated吗?

答案 1 :(得分:0)

我发现以下答案 (Spring Controller: RequestParam not validated despite @Valid and @Size) 对这个问题很有帮助。

基本上,它是这样说的:

  1. MethodValidationPostProcessor 需要添加到配置中。
  2. @Validated 注释需要添加到控制器类之上。
  3. 如果需要自定义响应,可能需要处理一些异常,例如 ConstraintViolationExceptionMethodArgumentNotValidException

要运行此设置,我必须添加 spring-boot-starter-validation,就像此答案中所说的那样:"The Bean Validation API is on the classpath but no implementation could be found" preventing startup