Olá, estou tendo um problema para criar uma tela de edição para um objeto.
Eu consigo abrir a tela e preencher os campos com os valores do objeto. Porém quando clico no botão salvar a única coisa que acontece é que todos os campos são limpos… Se alguém puder me ajudar…
segue abaixo os códigos dessa tela:
template da tela:
<?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">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:a4j="http://richfaces.org/a4j"
xmlns:rich="http://richfaces.org/rich"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.org/ui">
<h:head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<p:resources/>
<title>Controle de Estoque</title>
</h:head >
<h:body>
<h:outputStylesheet library="css" name="styles.css" />
<style type="text/css">
#navigation {font-size:0.75em; width:150px;}
#navigation ul {margin:0px; padding:0px;}
#navigation li {list-style: none;}
ul.top-level {background:#666;}
ul.top-level li {
border-bottom: #fff solid;
border-top: #fff solid;
border-width: 1px;
}
#navigation a {
color: #fff;
cursor: pointer;
display:block;
height:25px;
line-height: 25px;
text-indent: 10px;
text-decoration:none;
width:100%;
}
#navigation a:hover{
text-decoration:underline;
}
#navigation li:hover {
background: #76D7F5;
position: relative;
}
</style>
<div id="wrapper">
<div id="header">
<p>Header</p>
</div>
<hr/>
<div id="contentliquid">
<div id="content">
<h:form id="form">
<a4j:outputPanel id="pgrowl" ajaxRendered="true">
<p:growl id="growl"
sticky="true"
showSummary="true"
showDetail="true"/>
</a4j:outputPanel>
<ui:insert name="conteudo"/>
</h:form>
</div>
</div>
<div id="leftcolumn">
<h:form>
<div id="navigation">
<ul class="top-level">
<li><p:commandLink action="/ok.xhtml?faces-redirect=true">Home</p:commandLink></li>
<li><p:commandLink action="/paginas/departamento/lista_departamentos.xhtml?faces-redirect=true">Departamentos</p:commandLink></li>
<li><p:commandLink action="/paginas/fornecedor/lista_fornecedores.xhtml?faces-redirect=true">Fornecedores</p:commandLink></li>
<li><p:commandLink action="/paginas/produto/lista_produtos.xhtml?faces-redirect=true">Produtos</p:commandLink></li>
<li><p:commandLink action="/paginas.xhtml?faces-redirect=true">Movimentacao</p:commandLink></li>
<li><p:commandLink action="/paginas.xhtml?faces-redirect=true">Relatorios</p:commandLink></li>
</ul>
</div>
</h:form>
</div>
</div>
<div id="footer">
© Carlos.
</div>
</h:body>
</html>
Tela onde listo os objetos e chamo a tela de edição
<ui:composition template="/WEB-INF/templates/esqueleto.xhtml"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:a4j="http://richfaces.org/a4j"
xmlns:rich="http://richfaces.org/rich"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.org/ui">
<ui:define name="conteudo">
<p:panel header="Departamentos" style="width: 800px">
<f:facet name="actions">
<h:commandLink styleClass="ui-panel-titlebar-icon ui-corner-all ui-state-default"
action="#{departamentoBean.novoDepartamento}" title="Novo">
<h:outputText styleClass="ui-icon ui-icon-plus" />
</h:commandLink>
</f:facet>
<p:dataTable id="departamentos" var="departamento" value="#{departamentoBean.listaDepartamentos}" rowKey="#{departamento.idDepartamento}"
selection="#{departamentoBean.departamentoSelecionado}" selectionMode="single" emptyMessage="Nenhum Departamento cadastrado.">
<p:column headerText="Nome" >
#{departamento.nome}
</p:column>
<p:column id="colunaOpcoes" style="width:8%">
<p:menuButton id="menuButton" value="Opcoes">
<p:menuitem value="Alterar" action="#{departamentoBean.editarDepartamento(departamentoBean.departamentoSelecionado)}" icon="ui-icon-arrowrefresh-1-w"/>
<p:menuitem value="Excluir" onclick="confirmation.show()" icon="ui-icon-close" update="departamentos"/>
</p:menuButton>
</p:column>
</p:dataTable>
<p:confirmDialog id="confirmacaoExclusao" message="Deseja excluir o registro selecionado?" header="Confirmacao"
severity="alert" widgetVar="confirmation">
<p:commandButton id="confirm" value="Sim" update="departamentos,pgrowl" oncomplete="confirmation.hide()"
action="#{departamentoBean.excluirDepartamento}" />
<p:commandButton id="decline" value="Nao" onclick="confirmation.hide()" type="button" />
</p:confirmDialog>
</p:panel>
</ui:define>
</ui:composition>
Tela de cadastro e edição (uso a mesma tela)
<ui:composition template="/WEB-INF/templates/esqueleto.xhtml"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:a4j="http://richfaces.org/a4j"
xmlns:rich="http://richfaces.org/rich"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.org/ui">
<ui:define name="conteudo">
<p:panel header="Cadastro de Departamento" id="formCadDepartamento" style="width: 800px">
<h:panelGroup>
<h:inputHidden value="#{departamentoBean.departamento.idDepartamento}"/>
<h:panelGrid columns="1">
<h:outputLabel value="Nome"/>
<p:inputText id="inputNomeCad" required="true" label="Nome" value="#{departamentoBean.departamento.nome}" maxlength="45" size="100"/>
<p:message for="inputNomeCad"/>
</h:panelGrid>
</h:panelGroup>
<hr/>
<div class="botao">
<p:commandButton value="Salvar" action="#{departamentoBean.salvarDepartamento}" update="formCadDepartamento"/>
<p:commandButton value="Voltar" action="#{departamentoBean.cancelar}" immediate="true"/>
</div>
</p:panel>
</ui:define>
</ui:composition>
Meu bean que cuida das duas telas
package br.com.unopar.carlos.beans;
import java.util.ArrayList;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.context.FacesContext;
import br.com.unopar.carlos.departamento.Departamento;
import br.com.unopar.carlos.departamento.DepartamentoDAO;
@ManagedBean
public class DepartamentoBean {
Departamento departamento = new Departamento();
Departamento departamentoSelecionado = new Departamento();
List<Departamento> listaDepartamentos = new ArrayList<Departamento>();
public DepartamentoBean(){
DepartamentoDAO departamentoDAO = new DepartamentoDAO();
listaDepartamentos = departamentoDAO.listar();
}
public String salvarDepartamento(){
System.out.println("id_departamento:" + this.departamento.getIdDepartamento() + ":");
if (this.departamento.getIdDepartamento() == 0)
return incluirDepartamento();
else
return alterarDepartamento();
}
public String incluirDepartamento(){
DepartamentoDAO departamentoDAO = new DepartamentoDAO();
departamentoDAO.salvar(this.departamento);
return "/paginas/departamento/lista_departamentos.xhtml?faces-redirect=true";
}
public String alterarDepartamento(){
DepartamentoDAO departamentoDAO = new DepartamentoDAO();
departamentoDAO.atualizar(this.departamento);
return "/paginas/departamento/lista_departamentos.xhtml?faces-redirect=true";
}
public String novoDepartamento(){
System.out.println("Entrando");
return "/paginas/departamento/cadastro_departamento.xhtml?faces-redirect=true";
}
public String editarDepartamento(Departamento departamento){
this.departamento = departamento;
System.out.println("ta passando nes abotaw");
return "/paginas/departamento/cadastro_departamento.xhtml";
}
public void excluirDepartamento(){
DepartamentoDAO departamentoDAO = new DepartamentoDAO();
if(!departamentoDAO.excluir(departamentoSelecionado)){
FacesContext context = FacesContext.getCurrentInstance();
context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Não foi possível excluir o departamento.", ""));
}
this.listaDepartamentos = departamentoDAO.listar();
}
public String cancelar(){
System.out.println("ta cancelando?");
return "/paginas/departamento/lista_departamentos.xhtml?faces-redirect=true";
}
public Departamento getDepartamento() {
return departamento;
}
public void setDepartamento(Departamento departamento) {
this.departamento = departamento;
}
public Departamento getDepartamentoSelecionado() {
return departamentoSelecionado;
}
public void setDepartamentoSelecionado(Departamento departamentoSelecionado) {
this.departamentoSelecionado = departamentoSelecionado;
}
public List<Departamento> getListaDepartamentos() {
return listaDepartamentos;
}
public void setListaDepartamentos(List<Departamento> listaDepartamentos) {
this.listaDepartamentos = listaDepartamentos;
}
}