#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)
должно исправить это для вас.
Комментарии:
1. К сожалению, это не работает. Если я правильно понимаю, @Min проверяет поле уже созданного экземпляра BoardRequestDTO и затем проверяет. Я думаю, в моем случае это происходит до проверки. Он просто не может создать экземпляр BoardRequestDTO и выдать какое-либо исключение при синтаксическом анализе, потому что не может поместить «ssad» в int. Это не доходит до стадии проверки.
2. Есть ли у вас аннотация @Validated в вашем контроллере?
3. Проверка не требуется, когда вы работаете с @Validate и проверяете тело запроса. Все остальные аннотации проверки в классе работают без каких-либо проблем.
4. Можете ли вы опубликовать свой класс контроллера?