boa noite pessoal, como faço pra converter um String para date em primeface??
aqui é o meu código xhtml
<p:inputMask id="dt_nasc"
value="#{pacienteController.paciente.dt_nasc}"
mask="99/99/9999"
style="height:20px; font-size: 13px; width: 80px"/>
aqui é o código Paciente.java
package br.com.clinica.model;
import java.io.Serializable;
import java.util.Date;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Temporal;
@Entity(name = "paciente")
public class Paciente implements Serializable {
@Id
@GeneratedValue
@Temporal(javax.persistence.TemporalType.DATE)
private Date dt_nasc;
public Date getDt_nasc() {
return dt_nasc;
}
public void setDt_nasc(Date dt_nasc) {
this.dt_nasc = dt_nasc;
}
como faço essa conversão e onde coloco o código de conversão??
estou começando agora com java web e primeface, por favor, alguém poderia me ajudar, seria muito grato.
igor_ks
Novembro 29, 2013, 8:01am
#2
humm… não tem exemplo de código nesse link que você passou… você não teria um exemplo de código pra mandar ou então se quiser modificar algo no meu, fique a vontade se não for pedir demais.
igor_ks
Novembro 29, 2013, 8:43am
#4
Dando uma pesquisada, vi que tem até converter pronto… eu não conhecia: http://www.mkyong.com/jsf2/jsf-2-convertdatetime-example/
Dica: Procure as coisas no Google, ainda mais pra coisas básicas assim, tem de monte
já pesquisei bastante mas não encontrei muita coisa não…
mas vou procurar mais um pouco, qualquer coisa eu retorno aqui, mas de qualquer forma eu lhe agradeço igor_ks.
igor_ks
Novembro 29, 2013, 8:53am
#6
Eu te passei o link ali em cima…
esse link que você me passou, meu código já está exatamente assim, olhe pra você ver:
@Temporal(javax.persistence.TemporalType.DATE)
private Date dt_nasc;
public Date getDt_nasc() {
return dt_nasc;
}
public void setDt_nasc(Date dt_nasc) {
this.dt_nasc = dt_nasc;
}
porém, acredito que o que eu tenho que converter é o que o usuário digitar, porque o que o usuário digitar vem como String e preciso converter essa String para Date, mas não sei como e nem onde no meu código fazer essa conversão usando primeface.
esse é o código do meu xhtml
<p:inputMask id="dt_nasc"
value="#{pacienteController.paciente.dt_nasc}"
mask="99/99/9999"
style="height:20px; font-size: 13px; width: 80px"/>
e aqui o meu pacienteController:
package br.com.clinica.controller;
import br.com.clinica.dao.PacienteDao;
import br.com.clinica.dao.InterfacePaciente;
import br.com.clinica.model.Paciente;
import java.awt.event.ActionEvent;
import java.text.ParseException;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.event.AjaxBehaviorEvent;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;
import org.primefaces.context.RequestContext;
@ManagedBean
@SessionScoped
public class PacienteController {
private Paciente paciente;
private DataModel listaPaciente;
public PacienteController(){
this.paciente = new Paciente();
this.paciente.setCarteirinha_emitida("SIM");
this.paciente.setCobranca_empresa("SIM");
}
public Paciente getPaciente() {
if (this.paciente == null) {
this.paciente = new Paciente();
}
return paciente;
}
public void setPaciente(Paciente paciente) {
this.paciente = paciente;
}
public DataModel getListaPaciente() {
List<Paciente> lista = new PacienteDao().list();
listaPaciente = new ListDataModel(lista);
return listaPaciente;
}
public void prepararAdicionarPaciente(ActionEvent actionEvent) {
paciente = new Paciente();
}
public void prepararAlterarPaciente(ActionEvent actionEvent) {
paciente = (Paciente) (listaPaciente.getRowData());
}
public void adicionar(ActionEvent actionEvent) throws ParseException {
InterfacePaciente dao = new PacienteDao();
dao.salvar(paciente);
}
public String excluir() {
Paciente paciente = (Paciente) (listaPaciente.getRowData());
InterfacePaciente dao = new PacienteDao();
dao.remover(paciente);
return "paciente";
}
public void clear(AjaxBehaviorEvent event) {
this.paciente = null;
}
public void reset() {
RequestContext.getCurrentInstance().reset("form:dialog");
}
public void atualizarPaciente() {
InterfacePaciente dao = new PacienteDao();
dao.atualizar(paciente);
RequestContext.getCurrentInstance().closeDialog(paciente);
}
public String carregarPaciente(Paciente c) {
paciente = c;
return "pacienteAlterar";
}
public void choosePaciente() {
this.prepararAlterarPaciente(null);
RequestContext.getCurrentInstance().openDialog("pacienteAlterar");
}
}
igor_ks
Novembro 29, 2013, 9:34am
#10
Vc nao colocou o converter no seu xhtml…
vc viu todo o link q te passei?
eu não tinha percebido o restante do código do link que você enviou, acrescentei essa linha de código:
<f:convertDateTime pattern="d/M/yyyy" /> no meu código xhtml e ficou assim:
<p:inputMask id="dt_nasc"
value="#{pacienteController.paciente.dt_nasc}"
mask="99/99/9999"
style="height:20px; font-size: 13px; width: 80px">
<f:convertDateTime pattern="d/M/yyyy" />
</p:inputMask>
dessa maneira consegui inserir a data, mas está estranho, se eu digitar a data 22/06/1988 que é a minha data de nascimento, ele insere no banco a data do dia anterior 21/06/1988 e
isso está acontecendo pra qualquer data que eu digitar…
o que pode ser isso?
resolvi parte do problema com esse link http://www.guj.com.br/java/263937-aplicacao-grava-data-com-um-dia-antes-da-que-foi-digitada ,
acrescentei os atributos timeZone=“GMT-3” e locale=“pt_BR” a tag <f:convertDateTime /> e está gravando com a data que eu digitar,
mas no momento de recuperar a data do banco de dados, ele ainda continua me trazendo a data de um dia anterior a data cadastrada, porém no
bando de dados está correto, o erro é somente para a recuperação das informações de datas.
alguém sabe o que pode estar acontecendo e alguma solução pra isso?
Ninguém sabe algo a respeito disso??
igor_ks
Novembro 29, 2013, 3:16pm
#14
Vc está usando o mesmo componente para as duas situações?
Posta o xhtml do seu componente que vc salva os dados, e o que vc traz os dados
Colocou o convertDateTime com GMT onde mostra a saída também?
Oi pessoal, eu estive muito tempo a procura da solução para esta questão e agora esta disponivel nesta pagina…
funciona para o caso da inserção e da leitura… funcionou para mim