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

标签 java spring spring-boot bean-validation jsr380

我正在尝试使用 @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/

相关文章:

Java String 具有代码保留顺序和基于哈希的分区

java - 重命名所有 JSON 键 - Java - Jackson - spring boot

java - 如何根据 Spring Data couchbase 中的键获取批量文档/多重获取

java - 耶拿/Fuseki : loading a custom implementation of com. hp.hpl.jena.graph.impl.GraphBase?

java - 使用 JarBundler 将 Java 转换为适用于 MacOSX 的 .app 文件

java - 如何使用 Java Android 读取字符串中特定字符后的数字?

java - 当 @PathVariable 是字符串时,Spring Controller 测试失败并返回 404

java - 使用 String bean 作为 SPEL 中的键从映射中获取值

java - Spring Boot 路由/路径配置

java - 尝试使用 Spring Security 自定义失败登录