Как выполнить проверку для тела запроса этого поля it is digit?

#java #validation #spring-boot #spring-validator

#java #проверка #весенняя загрузка #spring-валидатор

Вопрос:

Я пытаюсь реализовать простой контроллер в Spring Boot. И я хочу проверить, что поле CompanyID из входящего ввода является digit?

MyEntity:

  @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
}
  

Как я могу правильно обработать случай, когда кто-то отправляет строку вместо цифры?

Ответ №1:

@Min(0) должно исправить это для вас.

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

Комментарии:

1. К сожалению, это не работает. Если я правильно понимаю, @Min проверяет поле уже созданного экземпляра BoardRequestDTO и затем проверяет. Я думаю, в моем случае это происходит до проверки. Он просто не может создать экземпляр BoardRequestDTO и выдать какое-либо исключение при синтаксическом анализе, потому что не может поместить «ssad» в int. Это не доходит до стадии проверки.

2. Есть ли у вас аннотация @Validated в вашем контроллере?

3. Проверка не требуется, когда вы работаете с @Validate и проверяете тело запроса. Все остальные аннотации проверки в классе работают без каких-либо проблем.

4. Можете ли вы опубликовать свой класс контроллера?