Bean验证@Positive指令不适用于Integer @PathVariable

时间:2019-06-25 17:20:29

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

我正在尝试使用@Positive bean验证注释来验证控制器方法(REST Api资源)Integer参数,但是什么也没发生。

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 并未执行应做的事情。

测试:

请求:
GET本地主机:8080 / test / 0
回应:
200 OK“ id <= 0”
预期:
400错误的请求

请求:
GET localhost:8080 / test / -1
回应:
200 OK“ id <= 0”
预期:400错误请求


当我尝试GET localhost:8080 / test / teste时,按预期收到400错误请求。

1 个答案:

答案 0 :(得分:1)

遇到相同的问题,并通过应用解决了

@Validated

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