【问题标题】:javax.validation.constraints.@Max not working as request paramjavax.validation.constraints.@Max 不能作为请求参数工作
【发布时间】:2019-09-19 13:59:08
【问题描述】:

尝试为尺寸请求参数添加@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 时,我得到 Pass 但不是有效而是错误消息 http://localhost:8080/all?sizes=21

有什么建议吗?谢谢

【问题讨论】:

    标签: spring spring-boot validation request max


    【解决方案1】:

    你把@Validated 放在你的班级上面了吗?

    【讨论】:

    • 是的。从导入 org.springframework.validation.annotation.Validated 导入;
    • 顺便问一下,@Validated 只能与控制器类一起使用吗? spring boot 应用类呢?
    【解决方案2】:

    我发现以下答案 (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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-12
      • 1970-01-01
      • 2014-03-17
      • 1970-01-01
      • 1970-01-01
      • 2022-01-26
      • 1970-01-01
      相关资源
      最近更新 更多