5
respostas

Não mostrou a data

<h:column>
              <f:facet name="header">Data</f:facet>
              <h:outputText value="#{livro.dataLancamento.time}">
                  <f:convertDateTime pattern="dd/MM/yyyy HH:mm" timeZone="America/Sao_Paulo" />
              </h:outputText>
            </h:column>

Não deveria mostrar a data na coluna nova ?

5 respostas

Olá Fabio, Como está mapeado seu atributo dataLancamento na entidade Livro?

Se estiver como Calendar, então realmente você precisa do método time, mas se estiver como util.Date, somente o dataLancamento é suficiente.

Oi Luis, Obrigado pelo retorno. Eu fiz usando calendar mesmo, vou colocar o código completo aqui porque não encontrei o problema. -- Segue o livro.java:

package br.com.caelum.livraria.modelo;

import java.util.ArrayList; import java.util.Calendar; import java.util.List;

import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.ManyToMany; import javax.persistence.Temporal; import javax.persistence.TemporalType;

@Entity public class Livro {

@Id @GeneratedValue private Integer id;

private String titulo; private String isbn; private double preco; @Temporal(TemporalType.TIMESTAMP) private Calendar dataLancamento = Calendar.getInstance();

@ManyToMany private List autores = new ArrayList();

public List getAutores() { return autores; }

public void adicionaAutor(Autor autor) { this.autores.add(autor); }

public Livro() { }

public Integer getId() { return id; }

public void setId(Integer id) { this.id = id; }

public String getTitulo() { return titulo; }

public void setTitulo(String titulo) { this.titulo = titulo; }

public String getIsbn() { return isbn; }

public void setIsbn(String isbn) { this.isbn = isbn; }

public double getPreco() { return preco; }

public void setPreco(double preco) { this.preco = preco; }

public Calendar getDataLancamento() { return dataLancamento; }

public void setDataLancamento(Calendar dataLancamento) { this.dataLancamento = dataLancamento; }

}

Em seguida está livro.xhtml:

<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

Novo Livro

Dados do Livro

Dados do Autor

Data

Oi Fabio, posta a sua classe xhtml inteira, pode ser algo no loop do livro.

Posta o seu managed bean também pra dar uma olhada, porque a entidade e o elemento estão aparentemente certos.

Oi Luis, Me perdoe por responder só agora. Foi uma semana de final de sprint e correrias diversas com o natal.

Hoje a tarde quando sobrou um tempo para estudar mais um pouco eu descobri o problema. No outputText da data, faltou eu colocar o livroBean na expression language. Portanto antes estava assim:

 <h:outputText value="#{livro.dataLancamento.time}">
                  <f:convertDateTime pattern="dd/MM/yyyy HH:mm" timeZone="America/Sao_Paulo" />
              </h:outputText>

e agora ficou assim:

 <h:outputText value="#{livroBean.livro.dataLancamento.time}">
                  <f:convertDateTime pattern="dd/MM/yyyy HH:mm" timeZone="America/Sao_Paulo" />
              </h:outputText>

Isso corrigiu o problema e fez funcionar corretamente.

Muito obrigado pelo ajuda e um feliz natal :D

Que bom que resolveu!