Boa noite a todos!
Estou fazendo um crud, mas ao alterar o objeto sempre esta perdendo o Id.
O fluxo é o seguinte:
Quando a tela é carregada é executado o método com o @PostConstruct então a lista de franquias é preenchida, eu seleciono uma franquia para ser alterada.
Nesse momento é preenchida a tela com os dados da franquia. Após editar a franquia e clicar em salvar o objeto franquia não esta com o ID cadastrado.
Não sei porque ele perde todos os valores dos atributos.
import br.com.ipirangahotstage.aplicacao.AplFranquia;
import br.com.ipirangahotstage.dominio.Franquia;
import java.util.Calendar;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.ejb.Stateful;
import javax.enterprise.inject.Model;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
/**
*
* @author rodrigo.xavier
*/
@Stateful
@Model
public class CtrFranquia {
@EJB
private AplFranquia aplFranquia;
private Franquia franquia = new Franquia();
private Franquia franquiaSelecionada;
private List<Franquia> listagem;
@PostConstruct
public void contruido() {
atualizarLisagem();
}
// <editor-fold defaultstate="collapsed" desc="Gets e Sets">
public void setFranquia(Franquia franquia) {
this.franquia = franquia;
}
public Franquia getFranquia() {
return franquia;
}
public List<Franquia> getListagem() {
return listagem;
}
public void setListagem(List<Franquia> listagem) {
this.listagem = listagem;
}
public void setFranquiaSelecionada(Franquia franquiaSelecionada) {
this.franquiaSelecionada = franquiaSelecionada;
}
// </editor-fold>
// <editor-fold defaultstate="collapsed" desc="Métodos">
public void salvar() {
try {
if (franquia.getDataInclusao() == null) {
franquia.setDataInclusao(Calendar.getInstance().getTime());
}
aplFranquia.salvar(franquia);
atualizarLisagem();
franquia = new Franquia();
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Aplicação", "Dados gravados com sucesso!"));
} catch (Exception ex) {
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro", ex.getMessage()));
}
}
public void excluir() {
aplFranquia.excluir(franquiaSelecionada);
listagem = aplFranquia.getListagem();
}
public void atualizarLisagem() {
listagem = aplFranquia.getListagem();
}
// </editor-fold>
}
<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui"
template="./../arquivos/modelos/decorador.xhtml">
<ui:define name="conteudo">
<h:form id="formFranquia">
<p:fieldset legend="Cadastro de Franquia" id="fldCadastro">
<p:messages id="messages" autoUpdate="true" showDetail="true" />
<p:panelGrid id="pnlForm" columns="2" style="margin-bottom: 10px;">
<h:outputText value="Data da Inclusão" />
<p:calendar value="#{ctrFranquia.franquia.dataInclusao}"
showOtherMonths="true" showButtonPanel="true"
effect="fadeIn" pattern="dd/mm/yyyy hh:m:ss"
id="txtDataInclusao" locale="pt_BR"
readonly="true" />
<h:outputText value="Descrição Franquia" />
<p:inputText required="true" label="Descrição Franquia" id="txtDescricaoFranquia"
value="#{ctrFranquia.franquia.descricao}" />
<h:outputText value="Informações Adicionais" />
<p:inputTextarea label="Informações Adicionais" id="txtInformacoesAdicionais"
value="#{ctrFranquia.franquia.infoadicional}"
style="width:300px;height:100px;" />
<f:facet name="footer">
<p:commandButton
value="Salvar"
update="@form fldCadastro :formLista"
icon="ui-icon-disk"
actionListener="#{ctrFranquia.salvar()}" />
<p:commandButton type="reset" value="Limpar" icon="ui-icon-cancel" />
</f:facet>
</p:panelGrid>
</p:fieldset>
</h:form>
<h:form id="formLista">
<p:dataTable id="tbLista" var="obj"
value="#{ctrFranquia.listagem}"
paginator="true"
rows="10" >
<f:facet name="header">
Lista de Franquias
</f:facet>
<p:column headerText="Código" sortBy="#{obj.id}" filterBy="#{obj.id}">
#{obj.id}
</p:column>
<p:column headerText="Descrição" sortBy="#{obj.descricao}"
filterBy="#{obj.descricao}">
#{obj.descricao}
</p:column>
<p:column headerText="Data Inclusão" >
#{obj.dataInclusao}
</p:column>
<p:column headerText="Informações Adicionais" >
#{obj.infoadicional}
</p:column>
<p:column>
<f:facet name="header">Operações</f:facet>
<p:commandButton image="ui-icon ui-icon-trash"
action="#{ctrFranquia.excluir}"
update=":formLista"
title="Excluir" >
<f:setPropertyActionListener
target="#{ctrFranquia.franquiaSelecionada}" value="#{obj}" />
</p:commandButton>
<p:commandButton image="ui-icon ui-icon-pencil"
update=":formFranquia"
title="Editar">
<f:setPropertyActionListener
target="#{ctrFranquia.franquia}" value="#{obj}" />
</p:commandButton>
</p:column>
</p:dataTable>
</h:form>
</ui:define>
</ui:composition>
Obrigado!