Я использую проверки javax в моем контроллере с @Valid @RequestBody
. Когда сервер получает неверные данные, он выдает ошибку, но я хочу обработать эту ошибку и вернуть пользовательскую отформатированную ошибку. Я не могу поймать исключение в моем совете диспетчера. Я использую Spring WebFlux, поэтому не могу использовать bindingResult. Как я могу справиться с этим исключением? Вот мой код
Контроллер
@PostMapping
fun createPerson(@Valid @RequestBody resource: PersonResource): Mono<Person> {
return personService.save(resource.toPerson())
}
Ресурс
data class PersonResource(
val id: String?,
@field:NotEmpty
val name: String,
...
}
ErrorHandler
@ControllerAdvice
class ApiErrorHandler {
@ExceptionHandler(IllegalArgumentException::class)
fun handleValidationErrors(e: IllegalArgumentException): ResponseEntity<*> {
// never reaches here
}
}