To usando - Windows 7 (US), com o Locale no formato Português (Brasil) mostrando as datas no formato dd/MM/yyyy - JDK7 32bits, - Tomcat 7, - As bibliotecas do projeto disponível pra download
Dá um erro de conversão de GregorianCalendar.
To usando - Windows 7 (US), com o Locale no formato Português (Brasil) mostrando as datas no formato dd/MM/yyyy - JDK7 32bits, - Tomcat 7, - As bibliotecas do projeto disponível pra download
Dá um erro de conversão de GregorianCalendar.
Oi Victor,
Em qual exercício isso? Ou nada funciona?
Um abraço
O problema foi na aula 5. Tenho aqui 2 cenários de testes:
Primeiro
@Temporal(TemporalType.DATE)
private Calendar dataNascimento;
<p:outputLabel value="Nascimento" for="dataNascimento" />
<p:calendar id="dataNascimento" navigator="true" effect="explode" value="#{clienteBean.cliente.dataNascimento.time}" pattern="dd/MM/yyyy" timeZone="America/Sao_Paulo" />
Tenho o erro:
value="#{clienteBean.cliente.dataNascimento.time}": Target Unreachable, 'dataNascimento' returned null
Segundo
Quanto tiro o .time
, tenho o erro:
value="#{clienteBean.cliente.dataNascimento}": Cannot convert 23/11/13 00:00 of type class java.util.Date to class java.util.Calendar
Instancie a data de nascimento no modelo com getIntance e mantenha a chamada ao getTime no xhtml, isto é, não tire o time)... Ex. de como instanciar: private Calendar dataLancamento = Calendar.getInstance();
[]'s
Kleber, olha o erro
Cannot format given Object as a Date
@Temporal(TemporalType.DATE)
private Calendar dataNascimento = Calendar.getInstance();
Victor fiz uns testes aqui e funciona normalmente, siga as etapas.
Classe DAO - Persistir os dados no banco - Somente de exemplo poderia ser escrita melhor
package br.com.virtualinvoacoes.cursoalura.dao;
import javax.persistence.EntityManager;
import javax.persistence.EntityTransaction;
import br.com.virtualinvoacoes.cursoalura.modelo.Cliente;
public class ClienteDAO {
private EntityManager em;
public ClienteDAO(EntityManager em) {
this.em = em;
}
public void salva(Cliente cliente){
EntityTransaction transaction = em.getTransaction();
try{
transaction.begin();
em.persist(cliente);
transaction.commit();
}catch (Exception e){
if(transaction != null || transaction.isActive()){
transaction.rollback();
}
}finally{
em.close();
}
}
}
Classe Cliente - Essencial ter os getters e setters
package br.com.virtualinvoacoes.cursoalura.modelo;
import java.util.Calendar;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
@Entity
public class Cliente {
@Id
@GeneratedValue
private Integer id;
@Temporal(TemporalType.DATE)
private Calendar dataNascimento;
public Cliente() {
this.dataNascimento = Calendar.getInstance();
}
public final Integer getId() {
return id;
}
public final void setId(Integer id) {
this.id = id;
}
public final Calendar getDataNascimento() {
return dataNascimento;
}
public final void setDataNascimento(Calendar dataNascimento) {
this.dataNascimento = dataNascimento;
}
}
Classe ClienteBean - Nunca esqueça de instanciar os objetos utilizados (Cliente)
package br.com.virtualinvoacoes.cursoalura.bean;
import javax.faces.bean.ManagedBean;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import br.com.virtualinvoacoes.cursoalura.dao.ClienteDAO;
import br.com.virtualinvoacoes.cursoalura.modelo.Cliente;
@ManagedBean
public class ClienteBean {
// O mais correto é termos uma JPAUtil por exemplo, mais o código ficaria extenso para apenas um exemplo.
private EntityManagerFactory emf = Persistence.createEntityManagerFactory("livro-jpa");
private EntityManager em = emf.createEntityManager();
private Cliente cliente;
public ClienteBean(){
this.cliente = new Cliente();
}
public final Cliente getCliente() {
return cliente;
}
public final void setCliente(Cliente cliente) {
this.cliente = cliente;
}
public void salva(){
new ClienteDAO(em).salva(this.cliente);
}
}
Em fim o xhtml - a única coisa a atentar é o convertDateTime
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:f="http://xmlns.jcp.org/jsf/core"
>
<h:head />
<h:body>
<h:form>
<fieldset>
<legend>Cadastro de Cliente</legend>
Dada de Nascimento:
<h:inputText value="#{clienteBean.cliente.dataNascimento.time}">
<f:convertDateTime pattern="dd/MM/yyyy" timeZone="America/Sao_Paulo"/>
</h:inputText>
<h:commandButton value="Salvar" action="#{clienteBean.salva}"/>
</fieldset>
</h:form>
</h:body>
</html>
Espero ter ajudado, analise com calma este código e veja se não esqueceu nada
Resolveu Victor?
Veja se você está fazendo os import corretamente da biblioteca Calendar: "import java.util.Calendar;" Mas este erro impossibilita a execução, pq no vídeo se você reparar acontece realmente este erro, mas logo em seguida ele explica como consertar.
Agora que vi o tópico é de 2013, não tem como fechar ele não? Pois fica junto com os abertos e acabamos respondendo algo que não é mais utilizado.
Tem sim! Estou fechando Quilmer. Não precisa responder, caso contrário ele abrirá novamente.