3
respostas

Como substituir: private Date = new Date(); no java 8?

Há situações que á mais pratico salvar o objeto com a data de hoje. A data que foi feito um orcamento por exemplo.

Eu fazia dessa forma:

public class Orcamento implements Serializable {

private Date data = new Date();
}

Mas com o Java8 nao dá certo fazendo dessa forma:

public class Orcamento implements Serializable {

private LocalDate data = LocalDate.now();
}

Duas perguntas: 1) Porque não dá certo dessa forma? 2) Qual é o jeito certo de fazer a mesma coisa com a nova API do Java8?

3 respostas

Olá Jonas, tudo bem? Você pode obter o resultado de data e hora através do LocalDateTime.now();

Olá Otavio, obrigado por responder.

Descobri o motivo do problema.

O componente calendar não reconhece a data enviada pelo LocalDade:

private LocalDate data = LocalDate.now();

****************************************
                      <p:calendar
                          value="#{funcionarioController.funcionario.dataContratacao}"
                          locale="pt_BR"
                          pattern="dd/MM/yyyy"
                          mask="true">
                     </p:calendar>

Fiz um teste, troquei o calendar por <p:inputText...

a data foi reconhecida normalmente.

Entào presumo que o problema seja apenas de incompativilidade do componente com a nova API de datas, do Java8.

Você pode criar um converter, veja o exemplo no site:

https://www.javacodegeeks.com/2015/06/utilizing-the-java-8-date-time-api-with-jsf-and-java-ee-7.html

Ou esperar o Java EE 8 que terá o jsf2.3 já com esse converter =)