Boa tarde pessoal, estou tendo problemas com o LocalDate do Java 8.
A situação é a seguinte, tenho uma classe .../model/Talhao onde esta, possui um atributo do tipo LocalDate que deve armazenar a data em que foi realizado um plantio neste talhão.
Essa informação será passada através de um formulário JSF + PrimeFaces, a dúvida esta exatamente em como salvar o valor inserido no formulário em meu atributo LocalDate data_plantio tentei utilizando <p:InputMask> para exigir o padrão dd/MM/yyyy mas ao submeter o formulário me deparo com o seguinte erro: java.lang.IllegalArgumentException: Cannot convert 08/08/2016 of type class java.lang.String to class java.time.LocalDate.
Alguém pode me ajudar com algum conversor do formulário para o atributo LocalDate.
Sendo value o atributo do tipo LocalDate situado na Classe Talhao, pattern é a máscara que o campo vai ser preenchido, ou seja, dia/mes/ano, converter="localDateConverter" é o nome do corversor que eu tive que criar para converter do formato de retorno de <p:calendar>, que é do tipo String, para o formato aceito pelo LocalDate.
Código do conveter:
@FacesConverter(value="localDateConverter")
public class FacesConvertLocalDate implements Converter {
@Override
public Object getAsObject(FacesContext context, UIComponent component, String value) {
Locale BRAZIL = new Locale("pt", "BR");
return LocalDate.parse(value, DateTimeFormatter.ofPattern("dd/MM/yyyy").withLocale(BRAZIL));
}
@Override
public String getAsString(FacesContext context, UIComponent component, Object value) {
LocalDate dateValue = (LocalDate) value;
return dateValue.format(DateTimeFormatter.ofPattern("dd/MM/yyyy"));
}
}
No banco de dados o formato é salvo no padrão yyyy-MM-dd. e a coluna na tabela do banco é do tipo Date, deve existir um outro converter para fazer as devidas conversões entre util.Date (usado no bacno) e time.LocalDate (usado na aplicação), mas isso acredito que seja trivial para quem tiver usando a nova a API do Java 8.