【问题标题】:How to make validation for request body that field of the it is digit?如何验证请求正文的字段是数字?
【发布时间】:2019-03-27 13:02:21
【问题描述】:

我尝试在 Spring Boot 中实现简单的控制器。我想验证来自传入输入的 companyId 字段是数字吗?

我的实体:

 @Data
 public class BoardRequestDTO {

    private Integer companyId;
    @NotEmpty(message = "Can't be empty")
    private String name;
    @NotEmpty(message = "Can't be empty")
    private String code;
 }

我的控制器的路线:

 @PostMapping
 public ResponseEntity<Board> createBoard(@Valid @RequestBody BoardRequestDTO boardRequestDTO) {}

我有正确实现的 ExeptionHendler 到 MethodArgumentNotValidException,它可以正确处理其他字段的非空大小写。 但是例如,当我使用以下请求正文发送请求时,我的控制台中只有 400 个状态,没有任何消息和任何异常:

{
    "companyId": "ssdcdsdcds",
    "code": "",
    "name": null
}

当有人发送字符串而不是数字时,我如何正确处理大小写?

【问题讨论】:

    标签: java validation spring-boot spring-validator


    【解决方案1】:

    @Min(0) 应该会为你修复它。

    https://spring.io/guides/gs/validating-form-input/

    【讨论】:

    • 不幸的是,它不起作用。如果我正确理解@Min,请检查已创建的 BoardRequestDTO 实例的字段,然后进行验证。我想在我的情况下它发生在验证之前。它只是不能创建 BoardRequestDTO 实例并抛出一些解析异常,因为不能将“ssad”放入 int。它没有进入验证阶段。
    • 你的控制器中有@Validated注解吗?
    • 当您使用 @Valid 并验证请求正文时,验证不是必需的。类中的所有其他验证注释都可以正常工作。
    • 你能发布你的控制器类吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-29
    • 2019-11-11
    • 2017-11-17
    • 1970-01-01
    • 1970-01-01
    • 2018-02-27
    • 1970-01-01
    相关资源
    最近更新 更多