Pessoal estou com um problema aki, estou fazendo um ecommerce com jpa + jsf + hibernate + primefaces.
Já tentei de várias formas mas sem sucesso. Eu tenho uma tabela com dados do banco, qdo clico no botão editar era para aparecer os dados daquele registro nos seus respectivos campos só que não aparece. Onde está o erro?
Já procurei em vários lugares mas nada deu certo pro meu caso. Abaixo está o código .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">
<ui:composition template="/Layout/Template.xhtml"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.org/ui">
<ui:define name="conteudo">
<h:body>
<h:form style="border: #999999;">
<p></p>
<p:commandButton id="btnAbrirCadastroCliente" value="Abrir Cadastro" immediate="true" oncomplete="cadastrarCliente.show()"/>
</h:form>
<h:form id="formListar" style="border: #999999;">
<p:dataTable id="tabela" selectionMode="single" selection="#{clienteBean.cliente}" rowKey="#{cli.id}" value="#{clienteBean.clientes}" var="cli" emptyMessage="Nenhum registro incluido." paginator="true" rows="10">
<f:facet name="header">
LISTA DE CLIENTES
</f:facet>
<p:column headerText="NOME" style="text-align: center">
<h:outputText value="#{cli.nome}" />
</p:column>
<p:column headerText="ENDEREÇO" style="text-align: center">
<h:outputText value="#{cli.endereco}" />
</p:column>
<p:column headerText="TELEFONE" style="text-align: center">
<h:outputText value="#{cli.telefone}" />
</p:column>
<p:column headerText="FAX" style="text-align: center">
<h:outputText value="#{cli.fax}" />
</p:column>
<p:column headerText="E-MAIL" style="text-align: center">
<h:outputText value="#{cli.email}" />
</p:column>
<p:column headerText="ALTERAR - EXCLUIR" style="text-align: center">
<p:commandButton action="#{clienteBean.recuperarCliente}" value="EDITAR" title="Editar" onclick="alterarCliente.show(); return false" update="alterar" immediate="true"/>
<p:commandButton value="EXCLUIR" title="Excluir" onclick="confirmation.show()" style="margin-left: 5px" >
<f:setPropertyActionListener value="#{cli}" target="#{clienteBean.cliente}" />
</p:commandButton>
</p:column>
</p:dataTable>
</h:form>
<h:form id="dlg">
<p:confirmDialog message="Deseja realmente excluir este registro?" hideEffect="explode" header="Aviso" severity="alert" widgetVar="confirmation">
<p:commandButton id="btnSim" value="Sim" oncomplete="confirmation.hide();" actionListener="#{clienteBean.excluir}" update=":formListar:tabela"/>
<p:commandButton id="btnNao" value="Não" onclick="confirmation.hide();" type="button"/>
</p:confirmDialog>
</h:form>
<p:dialog id="modalDialog" width="600" resizable="no" widgetVar="cadastrarCliente" header="CADASTRAR CLIENTE" modal="true" height="600">
<h:form id="formCadastroCliente">
<p:messages id="msgs" autoUpdate="true"/>
<h:panelGrid columns="2" cellpadding="4">
<h:outputLabel value="Nome: *" for="nome"></h:outputLabel>
<p:inputText id="nome" label="nome" value="#{clienteBean.cliente.nome}" maxlength="200" required="true"/>
<p:message for="nome" display="icon"/>
<h:outputText value="" />
<h:outputLabel value="Endereço: *" for="endereco"></h:outputLabel>
<p:inputText id="endereco" label="endereco" value="#{clienteBean.cliente.endereco}" maxlength="200" required="true"/>
<p:message for="endereco" display="icon"/>
<h:outputText value="" />
<h:outputLabel value="CEP: *" for="cep"></h:outputLabel>
<p:inputText id="cep" label="cep" value="#{clienteBean.cliente.cep}" maxlength="10"/>
<h:outputLabel value="Cidade: *" for="cidade"></h:outputLabel>
<p:inputText id="cidade" label="cidade" value="#{clienteBean.cliente.cidade}" maxlength="50" required="true"/>
<p:message for="cidade" display="icon"/>
<h:outputText value="" />
<h:outputLabel value="Estado: *" for="estado"></h:outputLabel>
<p:inputText id="estado" label="estado" value="#{clienteBean.cliente.estado}" maxlength="2" required="true"/>
<p:message for="estado" display="icon"/>
<h:outputText value="" />
<h:outputLabel value="Telefone:" for="telefone"></h:outputLabel>
<p:inputMask id="telefone" label="telefone" value="#{clienteBean.cliente.telefone}" maxlength="20" mask="(99)9999-9999"/>
<h:outputLabel value="Celular:" for="celular"></h:outputLabel>
<p:inputMask id="celular" label="celular" value="#{clienteBean.cliente.celular}" maxlength="20" mask="(99)9999-9999"/>
<h:outputLabel value="Fax:" for="fax"></h:outputLabel>
<p:inputMask id="fax" label="fax" value="#{clienteBean.cliente.fax}" maxlength="20" mask="(99)9999-9999"/>
<h:outputLabel value="E-mail:" for="email"></h:outputLabel>
<p:inputText id="email" label="email" value="#{clienteBean.cliente.email}" maxlength="20" required="true">
<f:validator validatorId="emailValidator"/>
</p:inputText>
<h:outputLabel value="Observação:" for="observacao"></h:outputLabel>
<p:inputTextarea id="observacao" label="observacao" value="#{clienteBean.cliente.observacao}"/>
</h:panelGrid>
<p:commandButton id="btnSalvar" value="SALVAR" actionListener="#{clienteBean.salvar}" update=":formListar:tabela" oncomplete="cadastrarCliente.hide()"/>
<p:commandButton id="btnCancelar" value="FECHAR" oncomplete="cadastrarCliente.hide()" update=":formListar:tabela"/>
</h:form>
</p:dialog>
<p:dialog id="alterar" appendToBody="true" width="600" resizable="no" widgetVar="alterarCliente" header="ALTERAR CLIENTE" modal="true" height="600">
<h:form prependId="false">
<p:messages id="msgs" autoUpdate="true"/>
<h:panelGrid columns="2" cellpadding="4" id="panel">
<h:outputLabel value="Nome: *" for="nome"></h:outputLabel>
<p:inputText id="nome" label="nome" value="#{clienteBean.cliente.nome}" maxlength="200" required="true"/>
<p:message for="nome" display="icon"/>
<h:outputText value="" />
<h:outputLabel value="Endereço: *" for="endereco"></h:outputLabel>
<p:inputText id="endereco" label="endereco" value="#{clienteBean.cliente.endereco}" maxlength="200" required="true"/>
<p:message for="endereco" display="icon"/>
<h:outputText value="" />
<h:outputLabel value="CEP: *" for="cep"></h:outputLabel>
<p:inputText id="cep" label="cep" value="#{clienteBean.cliente.cep}" maxlength="10"/>
<h:outputLabel value="Cidade: *" for="cidade"></h:outputLabel>
<p:inputText id="cidade" label="cidade" value="#{clienteBean.cliente.cidade}" maxlength="50" required="true"/>
<p:message for="cidade" display="icon"/>
<h:outputText value="" />
<h:outputLabel value="Estado: *" for="estado"></h:outputLabel>
<p:inputText id="estado" label="estado" value="#{clienteBean.cliente.estado}" maxlength="2" required="true"/>
<p:message for="estado" display="icon"/>
<h:outputText value="" />
<h:outputLabel value="Telefone:" for="telefone"></h:outputLabel>
<p:inputMask id="telefone" label="telefone" value="#{clienteBean.cliente.telefone}" maxlength="20" mask="(99)9999-9999"/>
<h:outputLabel value="Celular:" for="celular"></h:outputLabel>
<p:inputMask id="celular" label="celular" value="#{clienteBean.cliente.celular}" maxlength="20" mask="(99)9999-9999"/>
<h:outputLabel value="Fax:" for="fax"></h:outputLabel>
<p:inputMask id="fax" label="fax" value="#{clienteBean.cliente.fax}" maxlength="20" mask="(99)9999-9999"/>
<h:outputLabel value="E-mail:" for="email"></h:outputLabel>
<p:inputText id="email" label="email" value="#{clienteBean.cliente.email}" maxlength="20" required="true">
<f:validator validatorId="emailValidator"/>
</p:inputText>
<h:outputLabel value="Observação:" for="observacao"></h:outputLabel>
<p:inputTextarea id="observacao" label="observacao" value="#{clienteBean.cliente.observacao}"/>
</h:panelGrid>
<p:commandButton id="btnSalvar" value="ALTERAR" actionListener="#{clienteBean.editar}" update=":formListar:tabela" oncomplete="alterarCliente.hide()"/>
<p:commandButton id="btnCancelar" value="FECHAR" oncomplete="alterarCliente.hide()" update=":formListar:tabela"/>
</h:form>
</p:dialog>
</h:body>
</ui:define>
</ui:composition>
Logo abaixo está o método recuperaCliente:
public void recuperarCliente(){
cliente = new ClienteDao().getById(cliente.getId());
}
Abaixo o método getById:
public Cliente getById(Serializable id) {
try {
return (Cliente) HibernateUtil.getSessionFactory().openSession().load(Cliente.class, id);
} catch (HibernateException hibernateException) {
throw hibernateException;
}
}
Alguma sugestão do erro?