Olá Pessoal, tudo bem? Estou desenvolvendo um projeto em JSF, Primefaces, Hibernate e Spring Security!
O que acontece é o seguinte, se eu abro a página, digito os valores no campo e mando gravar, ele grava normalmente.
Se também eu clico no registro da tabela ao qual eu quero alterar e depois clico em salvar, ele dá o update no registro normalmente.
Porém, se eu dou o update e após eu clico em Novo para limpar o formulário para a inserção de um novo registro, ele não limpa e volta o valor antigo.
Os códigos estão abaixo:
[code]
Touch Sistema Integrado</h:head>
<h:body>
<p:layout fullPage=“true”>
<p:layoutUnit position=“north” id=“top” resizable=“false” closable=“false” size=“180”
collapsible=“true”>
<ui:insert name=“topo”>
<ui:include src="/topo.xhtml" />
</ui:insert>
</p:layoutUnit>
<p:layoutUnit position="center">
<h1>Gerenciador de Clientes</h1>
<h:form prependId="false" id="gerenciaCliente">
<h:panelGrid id="infosCliente" columns="2"
style="margin-bottom:10px">
<h:outputLabel for="idCliente" value="Código:" />
<h:inputText id="idCliente" value="#{clienteController.cliente.idCliente}" readonly="true" />
<h:outputLabel for="nome" value="Nome:" />
<h:inputText id="nome" value="#{clienteController.cliente.nome}" />
<h:outputLabel for="rua" value="Rua:" />
<h:inputText id="rua" value="#{clienteController.cliente.rua}" />
<h:outputLabel for="numero" value="Nº:" />
<h:inputText id="numero"
value="#{clienteController.cliente.numero}" />
<h:outputLabel for="bairro" value="Bairro:" />
<h:inputText id="bairro"
value="#{clienteController.cliente.bairro}" />
<h:outputLabel for="cep" value="Cep:" />
<h:inputText id="cep" value="#{clienteController.cliente.cep}" />
<h:outputLabel for="cidade" value="Cidade:" />
<h:inputText id="cidade"
value="#{clienteController.cliente.cidade}" />
<h:outputLabel for="estado" value="Estado:" />
<h:inputText id="estado"
value="#{clienteController.cliente.estado}" />
<h:outputLabel for="telefoneResidencial" value="Tel. Residencial:" />
<h:inputText id="telefoneResidencial"
value="#{clienteController.cliente.telefoneResidencial}" />
<h:outputLabel for="telefoneCelular" value="Tel. Celular:" />
<h:inputText id="telefoneCelular"
value="#{clienteController.cliente.telefoneCelular}" />
<h:outputLabel for="email" value="E-mail" />
<h:inputText id="email" value="#{clienteController.cliente.email}" />
<p:commandButton value="Novo" type="reset"
actionListener="#{clienteController.prepararAdicionarCliente}"/>
<p:commandButton update=":frm_listaCliente:tabela"
actionListener="#{clienteController.salvarCliente}"
value="Salvar" />
</h:panelGrid>
</h:form>
<h:form prependId="false" id="frm_listaCliente">
<p:dataTable id="tabela" var="cliente"
value="#{clienteController.listaClientes}"
paginator="true" rows="5"
rowsPerPageTemplate="5,10,15" >
<p:column>
<f:facet name="header">
<h:outputText value="Nome" />
</f:facet>
<h:outputText value="#{cliente.nome}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="E-mail" />
</f:facet>
<h:outputText value="#{cliente.email}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Tel. Resid." />
</f:facet>
<h:outputText value="#{cliente.telefoneResidencial}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Tel. Celular" />
</f:facet>
<h:outputText value="#{cliente.telefoneCelular}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Cidade" />
</f:facet>
<h:outputText value="#{cliente.cidade}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Alterar" />
</f:facet>
<p:commandButton
actionListener="#{clienteController.prepararAlterarCliente}"
value="Alterar" update=":gerenciaCliente:infosCliente"
/>
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Excluir" />
</f:facet>
<h:commandLink action="#{clienteController.excluirCliente}"
value="Excluir" />
</p:column>
</p:dataTable>
</h:form>
</p:layoutUnit>
</p:layout>
</h:body>
[/code]
Meu MB
[code]package controller;
import java.io.Serializable;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.event.ActionEvent;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;
import model.Cliente;
import Dao.ClienteDao;
import Dao.ClienteDaoImp;
@ManagedBean
@ViewScoped
public class ClienteController implements Serializable {
private Cliente cliente;
private DataModel listaClientes;
public ClienteController() {
// TODO Auto-generated constructor stub
this.cliente = new Cliente();
}
public DataModel<Cliente> getListaClientes() {
List<Cliente> lista = new ClienteDaoImp().list();
listaClientes = new ListDataModel<Cliente>(lista);
return listaClientes;
}
public Cliente getCliente() {
return cliente;
}
public void setCliente(Cliente cliente) {
this.cliente = cliente;
}
public void prepararAdicionarCliente(ActionEvent actionEvent){
this.cliente = new Cliente();
}
public void prepararAlterarCliente(ActionEvent actionEvent){
this.cliente = (Cliente)(listaClientes.getRowData());
}
public String excluirCliente(){
Cliente clienteTemp = (Cliente)(listaClientes.getRowData());
ClienteDao clienteDao = new ClienteDaoImp();
clienteDao.remove(clienteTemp);
return "index";
}
public void salvarCliente(ActionEvent actionEvent){
ClienteDao clienteDao = new ClienteDaoImp();
clienteDao.save(cliente);
}
}
[/code]