我正在尝试使用 @Positive bean 验证注释验证 Controller 方法(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,混合模式)
Spring 启动:
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 没有做它应该做的事情。
测试:
要求:
获取本地主机:8080/test/0
回复:
200 好的“id <= 0”
预计:
400 错误请求
要求:
获取本地主机:8080/test/-1
回复:
200 好的“id <= 0”
预期:400 个错误请求
当我尝试 GET localhost:8080/test/teste 时,我收到了 400 Bad Request,正如预期的那样。
最佳答案
遇到同样的问题,通过应用解决了
@Validated
在我的 Controller 上。这应该不是 HTTP 400,而是 HTTP 500。
关于java - Bean 验证 @Positive 指令不适用于 Integer @PathVariable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56759120/