1
resposta

Problema no campo DataNascimento

Fui seguindo o código e reparei que toda vez que tentava salvar um aluno, recebia o seguinte erro:

Mon Sep 28 19:49:37 BRT 2020
There was an unexpected error (type=Bad Request, status=400).
Validation failed for object='aluno'. Error count: 1
org.springframework.validation.BindException: org.springframework.validation.BeanPropertyBindingResult: 1 errors
Field error in object 'aluno' on field 'dataNascimento': rejected value [2001-11-01]; codes [typeMismatch.aluno.dataNascimento,typeMismatch.dataNascimento,typeMismatch.java.util.Date,typeMismatch]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [aluno.dataNascimento,dataNascimento]; arguments []; default message [dataNascimento]]; default message [Failed to convert property value of type 'java.lang.String' to required type 'java.util.Date' for property 'dataNascimento'; nested exception is org.springframework.core.convert.ConversionFailedException: Failed to convert from type [java.lang.String] to type [java.util.Date] for value '2001-11-01'; nested exception is java.lang.IllegalArgumentException]

Meu código está da seguinte forma:

    @GetMapping("/aluno/cadastrar")
    public String cadastrar(Model model){
        model.addAttribute("aluno",new Aluno());
        return "aluno/cadastrar";
    }

    @PostMapping("/aluno/salvar")
    public String salvar(@ModelAttribute Aluno aluno){
        System.out.println("Aluno para salvar: " + aluno);
        return "redirect:/";
    }
         <div class="row">
                    <div class="input-field col s12">
                        <input id="dataNascimento" type="date" class="datepicker" th:field="*{dataNascimento}"   />
                        <label for="dataNascimento">Dt. Nascimento</label>
                    </div>
                </div>
Field error in object 'aluno' on field 'dataNascimento': rejected value [2001-11-01]; codes [typeMismatch.aluno.dataNascimento,typeMismatch.dataNascimento,typeMismatch.java.util.Date,typeMismatch]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [aluno.dataNascimento,dataNascimento];

Após pesquisar na internet a solução que encontrei para resolver esse problema foi usar uma anotação no campo DataNascimento definido na classe Aluno.java

@DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date dataNascimento;

Talvez seja o caso de atualizar o código da classe aluno para contemplar essa anotação, pois sem ela não consegui avançar.

Obrigado.

1 resposta
O post foi fechado por inatividade. Para continuar o assunto, recomendamos criar um novo tópico. Bons Estudos!