1
resposta

Utilizando Java 8 (LocalDate) na Formatação de datas

Referente ao curso Spring MVC I, no capítulo Formatação de datas e atividade Configurando pelo AppWebConfiguration;

Ao tentar persistir datas LocalDate utilizando a configuração apresentada no exercício (mvcConversionService), ocorre a seguinte exceção:

Failed to convert property value of type java.lang.String to required type java.time.LocalDate for property dataLancamento; nested exception is org.springframework.core.convert.ConversionFailedException: Failed to convert from type [java.lang.String] to type [@org.springframework.format.annotation.DateTimeFormat java.time.LocalDate] for value 13/08/2017; nested exception is java.lang.IllegalArgumentException: Parse attempt failed for value [13/08/2017]

Se eu anoto o LocalDate conforme código a seguir, funciona, porém gostaria de justamente não colocar a anotação em todos os atributos, deixar isso global na aplicação conforme a aula

@DateTimeFormat(pattern = "dd/MM/yyyy")

Alguém aí poderia me dar uma luz?

1 resposta

Oi Wânderson, tudo bom?

Não sou especialista em Spring, mas nosso problema aqui é que não temos uma forma embutida no framework para converter esse valor de String, nesse formato, para um DateTime.

Quando adicionamos a anotação @DateTimeFormat, estamos meio que adicionando essa conversão na mão.

Uma possibilidade é você mesmo criar esse conversor e utiliza-lo para transformar os valores.

Dando uma googlada aqui, parece que existem algumas dependencias extras pra isso no proprio thymeleaf:

https://github.com/thymeleaf/thymeleaf-extras-java8time/blob/3.0-master/README.markdown

Maven:

<dependency>
    <groupId>org.thymeleaf.extras</groupId>
    <artifactId>thymeleaf-extras-java8time</artifactId>
</dependency>

No link do git existem alguns exemplos também =)

Espero que ajude. Abraço.