I am using javax validations in my controller with @Valid @RequestBody
. When the server receives invalid data it throws error but I want to handle that error and return custom formatted error. I am unable to catch exception in my controller advice. I am using spring webFlux so can't use the bindingResult. How can I handle that exception? Here is my code
Controller
@PostMapping
fun createPerson(@Valid @RequestBody resource: PersonResource): Mono<Person> {
return personService.save(resource.toPerson())
}
Resource
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
}
}