Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Dúvida no Ex. 3 da Aula 7 - Formatação de datas

Bom dia, como faço para utilizar o java.time.LocalDate invés do java.util.Calendar? Quando substituo o Calendar por LocalDate o atributo passa a chegar na minha classe de validação sempre com valor null.

3 respostas

Oi Andréa,

No Spring 4.0 foi introduzido o suporte a nova API de data do Java 8.

Mas se você estiver utilizando o Spring 3, terá de criar um conversor manualmente =/

Bons estudos!

Boa tarde Rodrigo, eu estou usando o Spring 4.

===== Model =====

@DateTimeFormat private LocalDate data;

===== jsp =====

form:input path="data"

===== AppWebConfiguration =====

@Bean public FormattingConversionService mvcConversionService() { DefaultFormattingConversionService conversionService = new DefaultFormattingConversionService(); DateFormatterRegistrar registrar = new DateFormatterRegistrar(); registrar.setFormatter(new DateFormatter("dd/MM/yyyy")); registrar.registerFormatters(conversionService); return conversionService; }

Precisa fazer alguma mudança no método de conversão? Ou existe alguma dependência que tenho que adicionar no meu pom.xml que seja referente as datas Java 8?

solução!

Oi Andréa,

Apesar do Spring 4 suportar a nova api de data do java 8, quem ainda não suporta é a JPA. E isso complica as coisas, pois sempre trabalhamos com datas que são enviadas para o banco e carregadas do banco.

Você teria que usar um conversor do JPA para isso. Algo assim:

import java.util.Date;

@Converter(autoApply = true)
public class LocalDateConverter implements AttributeConverter<LocalDate, Date> {

    @Override
    public Date convertToDatabaseColumn(LocalDate date) {
        Instant instant = Instant.from(date);
        return Date.from(instant);
    }

    @Override
    public LocalDate convertToEntityAttribute(Date value) {
        Instant instant = value.toInstant();
        return LocalDate.from(instant);
    }
}

Porém a annotation @DateTimeFormat não é mais possível usar, pois ela só funciona com Date ou Calendar.

Veja se lhe ajuda em algo.

Abraço

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software