Galera,
Estou usando o PrimeFaces 3.4 e estou tendo um problema com ele.
Estou fazendo algumas telas de CRUD, como no codigo abaixo:
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui">
<p:dataTable id="logradouros" var="logradouro" value="#{janelaLogradouro.listaDeLogradouros}" paginator="true" rows="#{janelaLogradouro.numeroDeLinhas}" rowsPerPageTemplate="#{janelaLogradouro.linhasPorPagina}"
selection="#{janelaLogradouro.logradouro}" selectionMode="single" rowKey="#{logradouro.descricao}" >
<f:facet name="header">
<h:outputText value="Lista de Logradouros" />
</f:facet>
<p:column headerText="Id">
#{logradouro.id}
</p:column>
<p:column headerText="Descrição">
#{logradouro.descricao}
</p:column>
<p:column headerText="Abreviação" >
#{logradouro.abreviacao}
</p:column>
<f:facet name="footer">
<h:panelGroup style="display:block; text-align:center">.
<p:commandButton icon="ui-icon ui-icon-pencil" value="Editar" style="width:80px" oncomplete="logradouroDialog.show()" update=":formCenter:formDialogo:display" />
<p:commandButton icon="ui-icon ui-icon-document" value="Novo" style="width:80px" actionListener="#{janelaLogradouro.prepararParaNovoRegistro}" oncomplete="logradouroDialog.show()" update=":formCenter:formDialogo:display" />
<p:commandButton icon="ui-icon ui-icon-close" value="Sair" style="width:80px"/>
</h:panelGroup>
</f:facet>
</p:dataTable>
<p:dialog id="dialog" header="Logradouro" widgetVar="logradouroDialog" resizable="false"
showEffect="clip" hideEffect="fold" width="600" >
<h:form prependId="false" id="formDialogo">
<p:panel menuTitle="Logradouro">
<h:panelGrid id="display" columns="2" cellpadding="4">
<h:outputText value="Id:" style="float: right"/>
<h:outputText value="#{janelaLogradouro.logradouro.id}" />
<h:outputText value="Descrição:" style="float: right"/>
<h:inputText value="#{janelaLogradouro.logradouro.descricao}" style="width: 300px" />
<h:outputText value="Abreviação:" style="float: right"/>
<h:inputText value="#{janelaLogradouro.logradouro.abreviacao}" style="width: 300px" />
</h:panelGrid>
<f:facet name="footer">
<h:panelGroup style="display:block; text-align:center">
<p:commandButton oncomplete="logradouroDialog.hide()" icon="ui-icon ui-icon-close" value="Sair" style="width:80px"/>
</h:panelGroup>
</f:facet>
</p:panel>
</h:form>
<p:commandButton oncomplete="logradouroDialog.hide()" icon="ui-icon ui-icon-disk" value="Salvar" style="width:80px" actionListener="#{janelaLogradouro.salvar}"/>
</p:dialog>
</ui:composition>
quando aciono o seguinte botao
<p:commandButton icon="ui-icon ui-icon-document" value="Novo" style="width:80px" actionListener="#{janelaLogradouro.prepararParaNovoRegistro}" oncomplete="logradouroDialog.show()" update=":formCenter:formDialogo:display" />
Chama o código abaixo normalmente, atribui um novo valor para a minha variável logradouro, ate aqui blza.
public void prepararParaNovoRegistro(ActionEvent actionEvent) {
this.logradouro = new Logradouro();
isNovoRegistro = true;
System.out.println("Dentro do metodo");
}
Preencho os dados do meu formulário e quando clico no bota abaixo:
<p:commandButton oncomplete="logradouroDialog.hide()" icon="ui-icon ui-icon-disk" value="Salvar" style="width:80px" actionListener="#{janelaLogradouro.salvar}"/>
O meu atributo logradouro vem como nulo.
public void salvar(ActionEvent actionEvent) {
try {
if (isNovoRegistro) {
ejbFacade.salvar(logradouro);
adicionarInformacao("Logradouro", "Logradouro gravado com sucesso");
} else {
//new LogradouroControle().atualizarLogradouro(logradouro);
ejbFacade.editar(logradouro);
adicionarInformacao("Logradouro", "Logradouro atualizado com sucesso");
}
} catch (Exception e) {
e.printStackTrace();
adicionarErro("Logradouro", e.getMessage());
} finally {
isNovoRegistro = false;
}
}
Na minha Classe estou colocando as seguintes anotaçoes:
@ManagedBean(name = "janelaLogradouro")
@SessionScoped
Em algum momento ele esta perdendo a referencia, so não estou sabendo onde.
Já nao mais o que eu faço!!!
Att