Olá Marcos, tudo bem?
Entendo sua dúvida. Quando um campo not nullable é nulo, uma exceção é disparada e pode ser difícil capturar o field para informar o usuário do erro.
Uma forma de tratar isso é utilizando a anotação @ExceptionHandler
e capturando a exceção HttpMessageNotReadableException
. Dentro do método que trata a exceção, você pode acessar o objeto BindingResult
que contém informações sobre o erro ocorrido, incluindo o nome do campo que gerou a exceção.
Segue um exemplo:
@ExceptionHandler(HttpMessageNotReadableException::class)
fun handleHttpMessageNotReadableException(ex: HttpMessageNotReadableException, request: WebRequest): ResponseEntity<Any> {
val bindingResult = ex.bindingResult
val errorMessage = bindingResult.fieldErrors.map { it.defaultMessage }.joinToString(", ")
val errorResponse = ErrorResponse(HttpStatus.BAD_REQUEST, errorMessage)
return ResponseEntity.badRequest().body(errorResponse)
}
Nesse exemplo, a classe ErrorResponse
é uma classe que representa a mensagem de erro que será enviada ao usuário. Você pode criar sua própria classe de erro ou utilizar uma já existente.
Espero ter ajudado e bons estudos!