【问题标题】:Bean validation @Positive directive is not working on Integer @PathVariableBean 验证 @Positive 指令不适用于 Integer @PathVariable
【发布时间】:2019-11-07 14:12:00
【问题描述】:

我正在尝试使用@Positive bean 验证注释验证控制器方法(REST Api 资源)整数参数,但没有任何反应。

Java:
Java 版本“11.0.2”2019-01-15 LTS
Java(TM) SE 运行时环境 18.9(内部版本 11.0.2+9-LTS)
Java HotSpot(TM) 64 位服务器 VM 18.9(内部版本 11.0.2+9-LTS,混合模式)

春季启动:
2.1.6.发布

代码:

@RestController
@RequestMapping("/test")
public class TestController {

    @GetMapping("/{id}")
    public ResponseEntity<?> lista(@Valid @NotNull @Positive @PathVariable("id") Integer id) {
        String msg = "";
        if (id > 0) {
            msg = "id > 0";
        } else {
            msg = "id <= 0";
        }
        System.out.println(msg);
        return ResponseEntity.ok(msg);
    }
}


@Positive 没有做它应该做的事情。

测试:

要求:
获取 localhost:8080/test/0
回应:
200 OK “id 预期:
400 错误请求

要求:
获取 localhost:8080/test/-1
回应:
200 OK “id 预期:400 错误请求


当我尝试 GET localhost:8080/test/teste 时,我收到了 400 Bad Request,正如预期的那样。

【问题讨论】:

    标签: java spring spring-boot bean-validation jsr380


    【解决方案1】:

    遇到同样的问题,通过申请解决了

    @Validated
    

    在我的控制器上。那应该给你的不是 HTTP 400,而是 HTTP 500。

    【讨论】:

    • 谢谢,它成功了。为了返回 400,我们在 @ControllerAdvice 异常处理程序中为 ConstraintViolationException 类型的异常添加了一个新方法。
    猜你喜欢
    • 2019-05-22
    • 2013-11-07
    • 1970-01-01
    • 2011-11-01
    • 2019-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-23
    相关资源
    最近更新 更多