Olá pessoal, estou desenvolvendo um sistema (estou inciando em jsf2 + primefaces), e na parte de cadastro de associados está acontecendo uma coisa muito estranha…
Tenho uma pagina “associado.xhtml” nela tenho um dialog que faz a pesquisa no banco de dados, até ai tudo bem, os dados aparecem corretamente.
Então quando o usuário clica no registro o dialog some e os dados vão para o form preenchido, entao quando isso acontece os dados não vem por completo nos campos, mas se eu fizer uma segunda pesquisa e clicar novamente ai sim os dados vem por completo, vou postar os codigos para vocês analisarem
AssociadoBean
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package plafama.controller;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import javax.faces.application.FacesMessage;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.util.List;
import org.primefaces.event.SelectEvent;
import plafama.model.Vendedor;
import plafama.model.Associado;
import plafama.dao.AssociadoDAO;
import plafama.dao.DependenteDAO;
import plafama.model.Usuario;
import plafama.model.Dependente;
import plafama.model.Plano;
import plafama.model.TabelaPreco;
/**
*
* @author Nielson
*/
@ManagedBean
@ViewScoped
public class AssociadoBean implements java.io.Serializable {
private Usuario usuario;
private Dependente dependente = new Dependente();
private List<Associado> associados;
private AssociadoDAO associadoDAO = new AssociadoDAO();
private DependenteDAO dependenteDAO = new DependenteDAO();
private Vendedor vendedor = new Vendedor();
private Plano plano = new Plano();
private TabelaPreco tabelaPreco = new TabelaPreco();
private Associado associado;
private String keyword;
private String filter;
public AssociadoBean() {
HttpServletRequest request = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();
HttpSession session = request.getSession();
usuario = (Usuario)session.getAttribute("usuario");
associados = null;
vendedor = new Vendedor();
associado = new Associado();
tabelaPreco = new TabelaPreco();
plano = new Plano();
associadoDAO.clear();
}
public void novo(){
vendedor = new Vendedor();
tabelaPreco = new TabelaPreco();
plano = new Plano();
associado = new Associado();
associadoDAO.clear();
}
public void salvar(){
FacesContext context = FacesContext.getCurrentInstance();
try {
associadoDAO.clear();
if (associado.getCodigo() == 0){
associado.setCodigo(associadoDAO.geraCodigo(String.valueOf(vendedor.getCodigo())));
}
associado.setVendedor(vendedor);
associado.setPlano(plano);
associado.setTabelaPreco(tabelaPreco);
associado = associadoDAO.saveOrUpdate(associado);
context.addMessage(null, new FacesMessage("Infomarção", "Registro salvo com sucesso!"));
}
catch (Exception e){
context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR,"Erro:", e.getMessage()));
}
}
public void excluir(){
FacesContext context = FacesContext.getCurrentInstance();
try {
associadoDAO.delete(associado);
novo();
associados = null;
context.addMessage(null, new FacesMessage("Infomarção", "Excluído com sucesso!"));
}
catch (Exception e){
context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR,"Erro:", e.getMessage()));
}
}
public void searchAssociados(){
associados = null;
associadoDAO.clear();
associados = associadoDAO.find(usuario,keyword, filter);
//System.out.println(associados.size());
}
public void clear(){
associadoDAO.clear();
}
public void onRowSelect(SelectEvent event){
associadoDAO.clear();
associado = (Associado)event.getObject();
associado = associadoDAO.get(associado.getCodigo());
setVendedor(associado.getVendedor());
setPlano(associado.getPlano());
setTabelaPreco(associado.getTabelaPreco());
}
public List<Dependente> getListaDependentes(){
return dependenteDAO.getDependentes(associado);
}
public Associado getAssociado() {
return associado;
}
public void setAssociado(Associado associado) {
this.associado = associado;
}
public List<Associado> getAssociados() {
return associados;
}
public String getFilter() {
return filter;
}
public void setFilter(String filter) {
this.filter = filter;
}
public String getKeyword() {
return keyword;
}
public void setKeyword(String keyword) {
this.keyword = keyword;
}
public Vendedor getVendedor() {
return vendedor;
}
public void setVendedor(Vendedor vendedor) {
this.vendedor = vendedor;
}
public Dependente getDependente() {
return dependente;
}
public void setDependente(Dependente dependente) {
this.dependente = dependente;
}
public Plano getPlano() {
return plano;
}
public void setPlano(Plano plano) {
this.plano = plano;
}
public TabelaPreco getTabelaPreco() {
return tabelaPreco;
}
public void setTabelaPreco(TabelaPreco tabelaPreco) {
this.tabelaPreco = tabelaPreco;
}
}
associado.xhtml
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.prime.com.tr/ui"
xmlns:f="http://java.sun.com/jsf/core">
<p:panel header="Associado" closable="true" id="panelAssociado">
<p:messages id="msgs" showDetail="true"/>
<h:form prependId="false">
<p:commandButton value="Novo" image="ui-icon-document" actionListener="#{associadoBean.novo}" update="panelAssociado"/>
<p:commandButton value="Salvar" image="ui-icon-disk" actionListener="#{associadoBean.salvar}" update="panelAssociado"/>
<p:commandButton value="Excluir" image="ui-icon-trash" onclick="confirmation.show()"/>
<p:commandButton value="Localizar" image="ui-icon-search" onclick="dlg.show()" update="result"/>
<p:confirmDialog message="Deseja Realmente excluir registro?"
showEffect="bounce" hideEffect="clip"
header="Excluir" severity="alert" widgetVar="confirmation">
<p:commandButton value="Não" onclick="confirmation.hide()" type="button" />
<p:commandButton value="Sim" update="panelAssociado" oncomplete="confirmation.hide()"
actionListener="#{associadoBean.excluir}" />
</p:confirmDialog>
<h3>Dados Pessoais</h3>
<h:panelGrid columns="6">
<h:outputLabel value="Código:"/>
<h:outputLabel value="CPF:"/>
<h:outputLabel value="Nome:"/>
<h:outputLabel value="Data de Nascimento"/>
<h:outputLabel value="Sexo"/>
<h:outputLabel value="Estado Cívil:"/>
<p:inputText id="codigo" size="10" value="#{associadoBean.associado.codigo}" disabled="true"/>
<p:inputMask id="cpf" size="14" value="#{associadoBean.associado.cpf}" mask="999.999.999-99" required="true" requiredMessage="Digite o CPF">
<f:converter converterId="plafama.util.NumberConverter"/>
</p:inputMask>
<p:inputText id="nome" size="70" style="text-transform:uppercase" value="#{associadoBean.associado.nome}" autocomplete="false" required="true" requiredMessage="Digite o Nome">
<f:converter converterId="plafama.util.UppercaseConverter"/>
</p:inputText>
<p:inputMask id="nascimento" size="11" mask="99/99/9999" value="#{associadoBean.associado.dataNascimento}" immediate="true">
<f:convertDateTime dateStyle="short" locale="pt-BR" pattern="dd/MM/yyyy"/>
</p:inputMask>
<h:selectOneMenu id="sexo" value="#{associadoBean.associado.sexo}">
<f:selectItem itemLabel="M" itemValue="M"/>
<f:selectItem itemLabel="F" itemValue="F"/>
</h:selectOneMenu>
<h:selectOneMenu id="estadoCivil" value="#{associadoBean.associado.estadoCivil}">
<f:selectItem itemLabel="CASADO(A)" itemValue="CASADO(A)"/>
<f:selectItem itemLabel="SOLTEIRO(A)" itemValue="SOLTEIRO(A)"/>
<f:selectItem itemLabel="DIVORCIADO(A)" itemValue="DIVORCIADO(A)"/>
<f:selectItem itemLabel="VIUVO(A)" itemValue="VIUVO(A)"/>
<f:selectItem itemLabel="OUTROS(A)" itemValue="OUTROS(A)"/>
</h:selectOneMenu>
</h:panelGrid>
</h:form>
<p:dialog header="Localizar..." widgetVar="dlg" resizable="false" width="900" height="350" showEffect="clip" hideEffect="clip">
<h:form prependId="false">
<h:panelGrid columns="3">
<h:outputLabel value="Consultar por:"/>
<h:outputLabel value="Filtro"/>
<h:outputLabel value=""/>
<p:inputText id="keyword" size="60" style="text-transform:uppercase" value="#{associadoBean.keyword}" autocomplete="false">
<f:converter converterId="plafama.util.UppercaseConverter"/>
</p:inputText>
<h:selectOneMenu id="filter" value="#{associadoBean.filter}">
<f:selectItem itemLabel="Nome" itemValue="nome"/>
<f:selectItem itemLabel="Código" itemValue="codigo"/>
<f:selectItem itemLabel="Bairro" itemValue="bairro"/>
<f:selectItem itemLabel="Cidade" itemValue="cidade"/>
<f:selectItem itemLabel="Vendedor" itemValue="vendedor"/>
<f:selectItem itemLabel="Plano" itemValue="plano"/>
</h:selectOneMenu>
<p:commandButton value="Buscar" image="ui-icon ui-icon-search" update="result" actionListener="#{associadoBean.searchAssociados}" ajax="true"/>
</h:panelGrid>
<p:dataTable id="result" var="assoc" value="#{associadoBean.associados}" selection="#{associadoBean.associado}" rowSelectListener="#{associadoBean.onRowSelect}" onRowSelectComplete="dlg.hide();" selectionMode="single" update="panelAssociado" emptyMessage="Nenhum registro encontrado">
<p:column>
<f:facet name="header">Código</f:facet>
#{assoc.codigo}
</p:column>
<p:column>
<f:facet name="header">Nome</f:facet>
#{assoc.nome}
</p:column>
<p:column>
<f:facet name="header">CPF</f:facet>
#{assoc.cpf}
</p:column>
<p:column>
<f:facet name="header">Telefone</f:facet>
#{assoc.foneResidencial}
</p:column>
<p:column>
<f:facet name="header">Celular</f:facet>
#{assoc.celular}
</p:column>
<p:column>
<f:facet name="header">Vendedor</f:facet>
#{assoc.vendedor.nome}
</p:column>
<p:column>
<f:facet name="header">Plano</f:facet>
#{assoc.plano.descricao}
</p:column>
</p:dataTable>
</h:form>
</p:dialog>
</p:panel>
</ui:composition>
Alguém já passou por esse tipo problema?