Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

HttpMessageNotReadableException

Boa tarde pessoal. Acho que tenho uma boa dúvida aqui. Como vocês fazem tratamento de @NotNull em um field not nullable em kotlin. Ex:

data class ClientForm(
    @field:NotBlank
    @field:NotNull
    val name: String,
    ...
)    

O campo name é not null pelo kotlin. A Exceção disparada por isto é HttpMessageNotReadableException

Não consigo capturar o field para informar o usuário disto. Como procederiam?

1 resposta
solução!

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!