[RESOLVIDO]Templates Facelets dando problemas ao manipular um controller

37 respostas
furacao123

Galera estou tentando fazer uma aplicação, onde possuo os templates montados em facelets, tenho um painel central e um onde ficam os dialogs do primefaces, quero fazer com que ao selecionar o menu, faça o update nos paineis, fazendo assim a navegacao do sistema por ajax sem recarregar pagina.

Conteudo do template.xhtml
<h:body>
        <p:growl id="growlMessage" showDetail="true" />

        <ui:insert name="body">

            <p:layout fullPage="true">

                <p:layoutUnit position="top" height="52">
                    <p:panel id="pnlTopo" styleClass="topo">
                        <ui:insert name="login">
                            <ui:include src="usuarioLogado.xhtml"/>
                        </ui:insert>
                    </p:panel>
                </p:layoutUnit>

                <p:layoutUnit position="center" closable="false">

                    <ui:insert name="menu"/>
                    <br/>

                    &lt;p:outputPanel id="pnlCorpo"&gt;     
                        &lt;ui:include src="${menuController.menuSelected}"/&gt;
                    &lt;/p:outputPanel&gt;

                &lt;/p:layoutUnit&gt;

                &lt;p:layoutUnit position="bottom" height="75"&gt;  
                    &lt;ui:include src="rodape.xhtml"/&gt;
                &lt;/p:layoutUnit&gt;

            &lt;/p:layout&gt;
            
            &lt;p:outputPanel id="pnlDialog" rendered="${menuController.hasDialog}"&gt;
                &lt;ui:include src="${menuController.dialogSelected}"/&gt;
            &lt;/p:outputPanel&gt;

        &lt;/ui:insert&gt;
    &lt;/h:body&gt;
Conteudo do home.xhtml
&lt;ui:composition template="../resources/template.xhtml"&gt;

        &lt;ui:define name="menu"&gt;
            &lt;ui:include src="../resources/menu.xhtml" /&gt;
        &lt;/ui:define&gt;

    &lt;/ui:composition&gt;
por padrao apos fazer o login, a aplicação chama a pagina home.jsf ao incluir o menu.xhtml
&lt;p:menubar autoSubmenuDisplay="true"&gt;  
            &lt;p:submenu label="Cadastro" icon="ui-icon ui-icon-pencil"&gt;  
                &lt;p:menuitem value="Empresa" actionListener="${menuController.menuEmpresa}" 
                            update="pnlCorpo pnlDialog" process="@this" icon="ui-icon ui-icon-triangle-1-e"/&gt;  
                &lt;p:menuitem value="Usuário" actionListener="${menuController.menuUsuario}"
                            update="pnlCorpo pnlDialog" process="@this" icon="ui-icon ui-icon-triangle-1-e"/&gt; 
            &lt;/p:submenu&gt;
ao selecionar determinado menu eu faço o update nos dois paineis do template. eu adiciono a listaEmpresa.html no pnlCorpo
&lt;h:form prependId="false"&gt;

        &lt;p:dataTable id="tbEmpresa" var="empresa" value="#{empresaController.empresaList}" 
                     paginatorPosition="bottom" emptyMessage="Nenhuma Empresa encontrada!" 
                     paginator="true" rows="15"
                     selection="#{empresaController.selectedEmpresa}" selectionMode="single"
                     onRowSelectComplete="dlgEmpresa.show()"
                     onRowSelectUpdate="pnlEmpresa"&gt;

            &lt;f:facet name="header"&gt;
                &lt;p:toolbar styleClass="bordaIE"&gt;
                    &lt;p:toolbarGroup align="left"&gt;
                        &lt;p:commandButton id="btnNovo" value="Novo" update="pnlEmpresa" styleClass="btnTexto" image="btnAdd"
                                         oncomplete="dlgEmpresa.show()" /&gt;
                        &lt;p:divider /&gt;
                        &lt;h:selectOneMenu id="cbPesquisa" styleClass="cbPesquisa"&gt;
                            &lt;f:selectItem itemLabel="Código" itemValue="0" /&gt;
                            &lt;f:selectItem itemLabel="Razão Social" itemValue="1"/&gt;
                            &lt;f:selectItem itemLabel="Nome Fantasia" itemValue="2"/&gt;
                            &lt;f:selectItem itemLabel="CNPJ" itemValue="3"/&gt;
                            &lt;f:selectItem itemLabel="Data Cadastro" itemValue="4"/&gt;
                        &lt;/h:selectOneMenu&gt;
                        &lt;p:inputText styleClass="txtPesquisa"/&gt;
                        &lt;p:commandButton value="Buscar" styleClass="btnTexto" image="btnBusca"/&gt;
                    &lt;/p:toolbarGroup&gt;
                &lt;/p:toolbar&gt;
            &lt;/f:facet&gt;

            &lt;p:column sortBy="#{empresa.id}"&gt;
                &lt;f:facet name="header"&gt;
                    Id
                &lt;/f:facet&gt;
                &lt;h:outputText value="#{empresa.id}"/&gt;
            &lt;/p:column&gt;

            &lt;p:column sortBy="#{empresa.cnpj}" filterBy="#{empresa.cnpj}"&gt;
                &lt;f:facet name="header"&gt;
                    CNPJ
                &lt;/f:facet&gt;
                &lt;h:outputText value="#{empresa.cnpj}"/&gt;
            &lt;/p:column&gt;

            &lt;p:column sortBy="#{empresa.razaoSocial}" filterBy="#{empresa.razaoSocial}"&gt;
                &lt;f:facet name="header"&gt;
                    Razão Social
                &lt;/f:facet&gt;
                &lt;h:outputText value="#{empresa.razaoSocial}"/&gt;
            &lt;/p:column&gt;

            &lt;p:column sortBy="#{empresa.nomeFantasia}" filterBy="#{empresa.nomeFantasia}"&gt;
                &lt;f:facet name="header"&gt;
                    Nome Fantasia
                &lt;/f:facet&gt;
                &lt;h:outputText value="#{empresa.nomeFantasia}"/&gt;
            &lt;/p:column&gt;

            &lt;p:column sortBy="#{empresa.dataCad}"&gt;
                &lt;f:facet name="header"&gt;
                    Data Cadastro
                &lt;/f:facet&gt;
                &lt;h:outputText value="#{empresa.dataCad}"/&gt;
            &lt;/p:column&gt;

        &lt;/p:dataTable&gt;

    &lt;/h:form&gt;
e no pnlDialog o dialogEmpresa.xhtml
&lt;p:dialog id="dlgEmpresa" widgetVar="dlgEmpresa" header="Cadastro Empresa"
              resizable="false" width="350" height="250" modal="true" showEffect="clip"&gt;
        &lt;h:form prependId="false"&gt;
            &lt;p:outputPanel id="pnlEmpresa"&gt;
                &lt;p:panel header="Código" styleClass="pnlCodigo"&gt;
                    &lt;h:outputLabel value="${empresaController.selectedEmpresa.id}"/&gt;
                &lt;/p:panel&gt;
                &lt;p:panel header="Dados" styleClass="pnlDados"&gt;
                    &lt;h:panelGrid columns="2"&gt;
                        &lt;h:outputLabel for="txtRazaoSocial" value="Razão Social"/&gt;
                        &lt;p:inputText id="txtRazaoSocial" value="${empresaController.selectedEmpresa.razaoSocial}"/&gt;
                        &lt;h:outputLabel for="txtNomeFantasia" value="Nome Fantasia"/&gt;
                        &lt;p:inputText id="txtNomeFantasia" value="${empresaController.selectedEmpresa.nomeFantasia}"/&gt;
                        &lt;h:outputLabel for="txtCnpj" value="CNPJ"/&gt;
                        &lt;p:inputText id="txtCnpj" value="${empresaController.selectedEmpresa.cnpj}"/&gt;
                    &lt;/h:panelGrid&gt;
                &lt;/p:panel&gt;
                &lt;p:outputPanel &gt;
                    &lt;p:commandButton value="Salvar" styleClass="btnTexto" image="btnAceito" /&gt;
                    &lt;p:commandButton value="Cancelar" styleClass="btnTexto" image="btnCancelar"/&gt;
                &lt;/p:outputPanel&gt;
            &lt;/p:outputPanel&gt;
        &lt;/h:form&gt;
    &lt;/p:dialog&gt;
as paginas aparecem e navegam normalmente, o problema é que dessa maneira ao clicar na linha no dataTable nao executa o metodo setSelectedEmpresa, e com isso nao atualiza o objeto e no dialog traz o objeto vazio, se eu tiro dos templates e faço diretamente funciona normal, o que esta errado, algum bug?

37 Respostas

Hebert_Coelho

Eu sei que esse layout deles tem problema se utiliza dialog dentro. Você teria que coloca-lo fora do layout unit.

furacao123

Entao mas o meu template.xhtml esta adicionando fora do layout

&lt;/p:layout&gt;  
              
            &lt;p:outputPanel id="pnlDialog" rendered="${menuController.hasDialog}"&gt;  
                &lt;ui:include src="${menuController.dialogSelected}"/&gt;  
            &lt;/p:outputPanel&gt;
Hebert_Coelho

Blz, tenta deixa-lo fora do outputPanel

Outra coisa, onde está a chamada para o método “setSelectedEmpresa” naõ achei.

furacao123

vou tentar deixar fora, entao a chama ao setSelectedEmpresa esta na tabela

selection="#{empresaController.selectedEmpresa}" selectionMode="single"
Hebert_Coelho

Mano, eu nunca consegui fazer esse trem aí funcionar desse modo. Sério!

Eu sempre utilizo o f:setPropertyActionListener em algum botão.

furacao123

entao tentei com o botao mas acontece a mesma coisa nao dispara o set e vai tudo vazio para o dialog

&lt;p:column styleClass="tbColCmd"&gt; &lt;p:commandLink update="pnlEmpresa" oncomplete="dlgEmpresa.show()" &gt; &lt;h:graphicImage url="${facescontext.currentinstance}/img/email.png" styleClass="bordaIE"/&gt; &lt;f:setPropertyActionListener value="#{empresa}" target="#{empresaController.selectedEmpresa}"/&gt; &lt;/p:commandLink&gt; &lt;/p:column&gt;

Hebert_Coelho

Faz um teste aí. arranca o form daí e coloque-o lá fora, antes do layout unit.

furacao123

pensei q fosse alguma coisa com os form alterei tudo e nada, agora se eu pego e mando carregar a pagina normal sem ficar dando update no painel funciona corretamente

Hebert_Coelho

Tira o controle do datatable e passa para o botão. Vou colocar abaixo um código de uma app que eu sei q funciona:

<p:column> <p:commandButton value="#{msgs.ler}" image="ui-icon ui-icon-search" update="formLerOrcamento" action="#{orcamentoMB.buscarOrcamentoEager()}" oncomplete="lerOrcamento.show()"> <f:setPropertyActionListener target="#{orcamentoMB.orcamento}" value="#{orcamento}" /> </p:commandButton> <p:spacer width="10" /> <p:commandButton value="#{msgs.atualizar}" ajax="false" image="ui-icon ui-icon-pencil" action="#{orcamentoMB.editarOrcamento()}"> <f:setPropertyActionListener target="#{orcamentoMB.orcamento}" value="#{orcamento}" /> </p:commandButton> <p:spacer width="10" /> <p:commandButton value="#{msgs.apagar}" image="ui-icon ui-icon-close" update="formOrcamentoExcluir" oncomplete="confirmarExcluirOrcamento.show()"> <f:setPropertyActionListener target="#{orcamentoMB.orcamento}" value="#{orcamento}" /> </p:commandButton> </p:column>

Na linha 7 eu coloquei ajax=false pois precisava de uma navegação e com ajax não rola.

furacao123

certo vou tentar colocar o form dentro do layoutUnit correto?

&lt;p:layout fullPage="true"&gt;

                &lt;p:layoutUnit position="top" height="52"&gt;
                    &lt;p:panel id="pnlTopo" styleClass="topo"&gt;
                        &lt;ui:insert name="login"&gt;
                            &lt;ui:include src="usuarioLogado.xhtml"/&gt;
                        &lt;/ui:insert&gt;
                    &lt;/p:panel&gt;
                &lt;/p:layoutUnit&gt;

                &lt;p:layoutUnit position="center" closable="false"&gt;

                    &lt;h:form&gt;
Hebert_Coelho

tenta antes do <p:layout fullPage=“true”>

furacao123

adiciono com a propriedade prependId=“false”?

furacao123

com o form fora continua mesma coisa…depurando a aplicação nao cai no metodo setSelectedEmpresa

fiz o commandButton como voce me passou e nao dispara

Hebert_Coelho

Tenta com o botão mas arranca as linhas

selection="#{empresaController.selectedEmpresa}" selectionMode=“single”
onRowSelectComplete=“dlgEmpresa.show()
onRowSelectUpdate=“pnlEmpresa”

furacao123

putz nada, retirei tudo da dataTable e fiquei apenas com o botao e nada de chamar o set

Hebert_Coelho

Como ficou o código do botão?

Como está seu método set?

furacao123
listaEmpresa.xhtml
&lt;?xml version=&quot;1.0&quot; encoding=&quot;ISO-8859-1&quot;?&gt;
&lt;!DOCTYPE html&gt;
&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;
      xmlns:h=&quot;http://java.sun.com/jsf/html&quot;
      xmlns:f=&quot;http://java.sun.com/jsf/core&quot;
      xmlns:p=&quot;http://primefaces.prime.com.tr/ui&quot;
      xmlns:ui=&quot;http://java.sun.com/jsf/facelets&quot;&gt;

        &lt;p:dataTable id=&quot;tbEmpresa&quot; var=&quot;empresa&quot; value=&quot;#{empresaController.empresaList}&quot; 
                     paginatorPosition=&quot;bottom&quot; emptyMessage=&quot;Nenhuma Empresa encontrada!&quot; 
                     paginator=&quot;true&quot; rows=&quot;15&quot;&gt;

            &lt;f:facet name=&quot;header&quot;&gt;
                &lt;p:toolbar styleClass=&quot;bordaIE&quot;&gt;
                    &lt;p:toolbarGroup align=&quot;left&quot;&gt;
                        &lt;p:commandButton id=&quot;btnNovo&quot; value=&quot;Novo&quot; update=&quot;pnlEmpresa&quot; styleClass=&quot;btnTexto&quot; image=&quot;btnAdd&quot;
                                         oncomplete=&quot;dlgEmpresa.show()&quot; /&gt;
                        &lt;p:divider /&gt;
                        &lt;h:selectOneMenu id=&quot;cbPesquisa&quot; styleClass=&quot;cbPesquisa&quot;&gt;
                            &lt;f:selectItem itemLabel=&quot;Código&quot; itemValue=&quot;0&quot; /&gt;
                            &lt;f:selectItem itemLabel=&quot;Razão Social&quot; itemValue=&quot;1&quot;/&gt;
                            &lt;f:selectItem itemLabel=&quot;Nome Fantasia&quot; itemValue=&quot;2&quot;/&gt;
                            &lt;f:selectItem itemLabel=&quot;CNPJ&quot; itemValue=&quot;3&quot;/&gt;
                            &lt;f:selectItem itemLabel=&quot;Data Cadastro&quot; itemValue=&quot;4&quot;/&gt;
                        &lt;/h:selectOneMenu&gt;
                        &lt;p:inputText styleClass=&quot;txtPesquisa&quot;/&gt;
                        &lt;p:commandButton value=&quot;Buscar&quot; styleClass=&quot;btnTexto&quot; image=&quot;btnBusca&quot;/&gt;
                    &lt;/p:toolbarGroup&gt;
                &lt;/p:toolbar&gt;
            &lt;/f:facet&gt;

            &lt;p:column sortBy=&quot;#{empresa.id}&quot;&gt;
                &lt;f:facet name=&quot;header&quot;&gt;
                    Id
                &lt;/f:facet&gt;
                &lt;h:outputText value=&quot;#{empresa.id}&quot;/&gt;
            &lt;/p:column&gt;

            &lt;p:column sortBy=&quot;#{empresa.cnpj}&quot; filterBy=&quot;#{empresa.cnpj}&quot;&gt;
                &lt;f:facet name=&quot;header&quot;&gt;
                    CNPJ
                &lt;/f:facet&gt;
                &lt;h:outputText value=&quot;#{empresa.cnpj}&quot;/&gt;
            &lt;/p:column&gt;

            &lt;p:column sortBy=&quot;#{empresa.razaoSocial}&quot; filterBy=&quot;#{empresa.razaoSocial}&quot;&gt;
                &lt;f:facet name=&quot;header&quot;&gt;
                    Razão Social
                &lt;/f:facet&gt;
                &lt;h:outputText value=&quot;#{empresa.razaoSocial}&quot;/&gt;
            &lt;/p:column&gt;

            &lt;p:column sortBy=&quot;#{empresa.nomeFantasia}&quot; filterBy=&quot;#{empresa.nomeFantasia}&quot;&gt;
                &lt;f:facet name=&quot;header&quot;&gt;
                    Nome Fantasia
                &lt;/f:facet&gt;
                &lt;h:outputText value=&quot;#{empresa.nomeFantasia}&quot;/&gt;
            &lt;/p:column&gt;

            &lt;p:column sortBy=&quot;#{empresa.dataCad}&quot;&gt;
                &lt;f:facet name=&quot;header&quot;&gt;
                    Data Cadastro
                &lt;/f:facet&gt;
                &lt;h:outputText value=&quot;#{empresa.dataCad}&quot;/&gt;
            &lt;/p:column&gt;

            &lt;p:column&gt;
                &lt;p:commandButton value=&quot;Editar&quot; image=&quot;ui-icon ui-icon-search&quot; update=&quot;pnlEmpresa&quot;   
                                 oncomplete=&quot;dlgEmpresa.show()&quot;&gt;  
                    &lt;f:setPropertyActionListener value=&quot;#{empresa}&quot; target=&quot;#{empresaController.selectedEmpresa}&quot;/&gt;  
                &lt;/p:commandButton&gt;
            &lt;/p:column&gt;

        &lt;/p:dataTable&gt;
&lt;/html&gt;
dialogEmpresa.xhtml
&lt;?xml version=&quot;1.0&quot; encoding=&quot;ISO-8859-1&quot;?&gt;
&lt;!DOCTYPE html&gt;
&lt;html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:p="http://primefaces.prime.com.tr/ui"
      xmlns:ui="http://java.sun.com/jsf/facelets"&gt;

    &lt;p:dialog id="dlgEmpresa" widgetVar="dlgEmpresa" header="Cadastro Empresa"
              resizable="false" width="350" height="250" modal="true" showEffect="clip"&gt;
        &lt;h:form prependId="false"&gt;
            &lt;p:outputPanel id="pnlEmpresa"&gt;
                &lt;p:panel header="Código" styleClass="pnlCodigo"&gt;
                    &lt;h:outputLabel value="#{empresaController.selectedEmpresa.id}"/&gt;
                &lt;/p:panel&gt;
                &lt;p:panel header="Dados" styleClass="pnlDados"&gt;
                    &lt;h:panelGrid columns="2"&gt;
                        &lt;h:outputLabel for="txtRazaoSocial" value="Razão Social"/&gt;
                        &lt;p:inputText id="txtRazaoSocial" value="#{empresaController.selectedEmpresa.razaoSocial}"/&gt;
                        &lt;h:outputLabel for="txtNomeFantasia" value="Nome Fantasia"/&gt;
                        &lt;p:inputText id="txtNomeFantasia" value="#{empresaController.selectedEmpresa.nomeFantasia}"/&gt;
                        &lt;h:outputLabel for="txtCnpj" value="CNPJ"/&gt;
                        &lt;p:inputText id="txtCnpj" value="#{empresaController.selectedEmpresa.cnpj}"/&gt;
                    &lt;/h:panelGrid&gt;
                &lt;/p:panel&gt;
                &lt;p:outputPanel &gt;
                    &lt;p:commandButton value="Salvar" styleClass="btnTexto" image="btnAceito" /&gt;
                    &lt;p:commandButton value="Cancelar" styleClass="btnTexto" image="btnCancelar"/&gt;
                &lt;/p:outputPanel&gt;
            &lt;/p:outputPanel&gt;
        &lt;/h:form&gt;
    &lt;/p:dialog&gt;

&lt;/html&gt;
template.xhtml
&lt;?xml version=&quot;1.0&quot; encoding=&quot;ISO-8859-1&quot;?&gt;
&lt;!DOCTYPE html&gt;
&lt;html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:p="http://primefaces.prime.com.tr/ui"&gt;

    &lt;h:head&gt;
        &lt;ui:insert name="titulo"&gt;
            &lt;title&gt;#{msg['aplicacao.titulo']}&lt;/title&gt;
        &lt;/ui:insert&gt;

        &lt;ui:insert name="cabecalho"&gt;
            &lt;link href="${facesContext.externalContext.requestContextPath}/style/jquery-ui-1.8.16.custom.css" type="text/css" rel="stylesheet"  /&gt;
            &lt;link href="${facesContext.externalContext.requestContextPath}/style/listaNFe.css" type="text/css" rel="stylesheet" /&gt;
            &lt;link href="${facesContext.externalContext.requestContextPath}/style/listaEmpresa.css" type="text/css" rel="stylesheet" /&gt;
            &lt;link href="${facesContext.externalContext.requestContextPath}/style/default.css" type="text/css" rel="stylesheet" /&gt;
            &lt;ui:insert name="javascript" /&gt;
            &lt;ui:insert name="css" /&gt;
        &lt;/ui:insert&gt;
    &lt;/h:head&gt;

    &lt;h:body&gt;
        &lt;p:growl id="growlMessage" showDetail="true" /&gt;

        &lt;ui:insert name="body"&gt;

            &lt;h:form prependId="false"&gt;
                &lt;p:layout fullPage="true"&gt;

                    &lt;p:layoutUnit position="top" height="52"&gt;
                        &lt;p:panel id="pnlTopo" styleClass="topo"&gt;
                            &lt;ui:insert name="login"&gt;
                                &lt;ui:include src="usuarioLogado.xhtml"/&gt;
                            &lt;/ui:insert&gt;
                        &lt;/p:panel&gt;
                    &lt;/p:layoutUnit&gt;

                    &lt;p:layoutUnit position="center" closable="false"&gt;

                        &lt;ui:insert name="menu"/&gt;
                        <br/>

                        &lt;p:outputPanel id="pnlCorpo"&gt;
                            &lt;ui:insert name="corpo"&gt;
                                &lt;ui:include src="#{menuController.menuSelected}"/&gt;
                            &lt;/ui:insert&gt;
                        &lt;/p:outputPanel&gt;

                    &lt;/p:layoutUnit&gt;

                    &lt;p:layoutUnit position="bottom" height="75"&gt;  
                        &lt;ui:include src="rodape.xhtml"/&gt;
                    &lt;/p:layoutUnit&gt;

                &lt;/p:layout&gt;
            &lt;/h:form&gt;

            &lt;p:outputPanel id="pnlDialog" rendered="#{menuController.hasDialog}"&gt;
                &lt;ui:insert name="dialog"&gt;
                    &lt;ui:include src="#{menuController.dialogSelected}"/&gt;
                &lt;/ui:insert&gt;
            &lt;/p:outputPanel&gt;

        &lt;/ui:insert&gt;
    &lt;/h:body&gt;
&lt;/html&gt;
EmpresaController
package br.com.grupointesis.mensagerianfe.controller;

import br.com.grupointesis.mensagerianfe.model.entity.Empresa;
import br.com.grupointesis.mensagerianfe.service.EmpresaService;
import java.io.Serializable;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.ViewScoped;
import org.primefaces.event.SelectEvent;

/**
 *
 * @author Diogo
 */
@ManagedBean
@ViewScoped
public class EmpresaController implements Serializable {

    // &lt;editor-fold defaultstate="collapsed" desc="Atributos"&gt;
    @ManagedProperty(name = "empresaService", value = "#{empresaService}")
    private EmpresaService empresaService;
    private List&lt;Empresa&gt; empresaList;
    private Empresa selectedEmpresa;
    //&lt;/editor-fold&gt;

    public EmpresaController() {
    }

    // &lt;editor-fold defaultstate="collapsed" desc="GET / SET"&gt;

    public List&lt;Empresa&gt; getEmpresaList() {
        return empresaList;
    }

    public void setEmpresaList(List&lt;Empresa&gt; empresaList) {
        this.empresaList = empresaList;
    }

    public Empresa getSelectedEmpresa() {
        return selectedEmpresa;
    }

    public void setSelectedEmpresa(Empresa selectedEmpresa) {
        this.selectedEmpresa = selectedEmpresa;
    }

    public void setEmpresaService(EmpresaService empresaService) {
        this.empresaService = empresaService;
    }
    //&lt;/editor-fold&gt;

    @PostConstruct
    public void init() {
        setEmpresaList(empresaService.getAll(0));
        setSelectedEmpresa(new Empresa());
    }

    @PreDestroy
    public void destroy() {
    }
    
    public void onRowSelect(SelectEvent event) {
        System.out.println("RAZAO SOCIAL " + ((Empresa) event.getObject()).getRazaoSocial());
    }

}
Hebert_Coelho

Coloca o ManagedBean #{empresaController.selectedEmpresa}

furacao123

Não entendi coloca o ManagedBean onde?

Hebert_Coelho

Aqui uai. Escreve o código do managedBean aí por favor.

furacao123

cara que estranho, fiz essas paginas carregarem por default ja depois que faço o login, quando cliquei a primeira vez no botao nao carregou nada, quando cliquei novamente trouce os dados, mas dae quando navego em outra pagina no menu, esta outra da problema nao traz nada nao carrega os panel corretamente

furacao123
Aqui uai. Escreve o código do managedBean aí por favor.

ja mandei ali em cima EmpresaController...mas segue novamente :D

package br.com.grupointesis.mensagerianfe.controller;

import br.com.grupointesis.mensagerianfe.model.entity.Empresa;
import br.com.grupointesis.mensagerianfe.service.EmpresaService;
import java.io.Serializable;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.ViewScoped;
import org.primefaces.event.SelectEvent;

/**
 *
 * @author Diogo
 */
@ManagedBean
@ViewScoped
public class EmpresaController implements Serializable {

    // &lt;editor-fold defaultstate="collapsed" desc="Atributos"&gt;
    @ManagedProperty(name = "empresaService", value = "#{empresaService}")
    private EmpresaService empresaService;
    private List&lt;Empresa&gt; empresaList;
    private Empresa selectedEmpresa;
    //&lt;/editor-fold&gt;

    public EmpresaController() {
    }

    // &lt;editor-fold defaultstate="collapsed" desc="GET / SET"&gt;

    public List&lt;Empresa&gt; getEmpresaList() {
        return empresaList;
    }

    public void setEmpresaList(List&lt;Empresa&gt; empresaList) {
        this.empresaList = empresaList;
    }

    public Empresa getSelectedEmpresa() {
        return selectedEmpresa;
    }

    public void setSelectedEmpresa(Empresa selectedEmpresa) {
        System.out.println("SET EMPRESA " + selectedEmpresa);
        this.selectedEmpresa = selectedEmpresa;
    }

    public void setEmpresaService(EmpresaService empresaService) {
        this.empresaService = empresaService;
    }
    //&lt;/editor-fold&gt;

    @PostConstruct
    public void init() {
        setEmpresaList(empresaService.getAll(0));
        setSelectedEmpresa(new Empresa());
    }

    @PreDestroy
    public void destroy() {
    }
    
}
Hebert_Coelho

Foi mals.

Faz só um teste. Troca de ViewScoped e poe SessionScoped

furacao123

putz mesma coisa, nada de disparar o set

é recomendado fazer navegacao de menu dessa forma, dando update em um painel corpo, deixando assim a aplicação toda em ajax, ou faço chamar a url inteira no menu?

Hebert_Coelho

Se é recomendado não sei. Sei que funciona! ^^

Tenta chamar seu managedBean com EmpresaController ou invés de empresaController.

furacao123

Opa colocando todos os ManagedBeans em sessionScoped parece que funcionou, unica coisa estranha é o menu que sempre tem de dar o segundo clique para começar a funcionar

furacao123

outra coisa o filterBy do dataTable agora dispara a seguinte exception

java.lang.NullPointerException at org.primefaces.component.datatable.DataHelper.decodeFilterRequest(DataHelper.java:152) at org.primefaces.component.datatable.DataTableRenderer.decode(DataTableRenderer.java:57) at javax.faces.component.UIComponentBase.decode(UIComponentBase.java:787) at org.primefaces.component.datatable.DataTable.processDecodes(DataTable.java:594) at com.sun.faces.context.PartialViewContextImpl$PhaseAwareVisitCallback.visit(PartialViewContextImpl.java:506) at com.sun.faces.component.visit.PartialVisitContext.invokeVisitCallback(PartialVisitContext.java:183) at javax.faces.component.UIData.visitTree(UIData.java:1411) at javax.faces.component.UIComponent.visitTree(UIComponent.java:1600) at javax.faces.component.UIComponent.visitTree(UIComponent.java:1600) at javax.faces.component.UIComponent.visitTree(UIComponent.java:1600) at javax.faces.component.UIComponent.visitTree(UIComponent.java:1600) at javax.faces.component.UIForm.visitTree(UIForm.java:335) at javax.faces.component.UIComponent.visitTree(UIComponent.java:1600) at javax.faces.component.UIComponent.visitTree(UIComponent.java:1600) at com.sun.faces.context.PartialViewContextImpl.processComponents(PartialViewContextImpl.java:376) at com.sun.faces.context.PartialViewContextImpl.processPartial(PartialViewContextImpl.java:252) at javax.faces.context.PartialViewContextWrapper.processPartial(PartialViewContextWrapper.java:183) at javax.faces.component.UIViewRoot.processDecodes(UIViewRoot.java:931) at com.sun.faces.lifecycle.ApplyRequestValuesPhase.execute(ApplyRequestValuesPhase.java:78)

Hebert_Coelho

Eu to achando estranho é pq você colocou ViewScoped. Se não me engano, esse tipo de view só funciona com CDI. mas vc estava utilizando as anotação que não são do CDI.

:shock:

furacao123

vacilo meu, mas o pior é que outras paginas funcionavam, qual o impacto agora no sessionScoped, utilizo ele ou o requestScoped?

Hebert_Coelho

O sessionScoped funciona como se fosse sessão http. Ele vai guardar tudo na memória do teu servidor. Aí já viu né?

O ideal eh requested mesmo. Vai dar um cadin mais de trabalho mas vale a pena. [=

furacao123

putz com requestScoped nao funciona nada nem as paginas de antes…

Hebert_Coelho

Então deve ter alguma coisa errada em como vc montou a base do seu sistema. sorry =/

furacao123

só lembrando que estou utilizando SPRING 3 + JPA

furacao123

com ViewScoped, o que funcionava antes voltou a funcionar… :shock:

Hebert_Coelho

Talvez o Spring possa implementar o ViewScoped de algum modo diferente.

furacao123

Vou fazer a implementacao de um scope view para o spring e alterar os managedbeans para Controller, vou deixar o Spring gerenciar os MB, e na segunda posto o resultado.

vlw

furacao123

Implementando uma view do Spring nao funcionou corretamente, fiz o seguinte deixei o controller da empresa como @ViewScoped e o MenuController que estava como @RequestScoped alterei para @SessionScoped, dessa maneira funcionou corretamente, mas como jakefrog disse

vou dar uma pesquisada nisso.

mas dessa forma dou por encerrado.

vlw

Criado 4 de novembro de 2011
Ultima resposta 7 de nov. de 2011
Respostas 37
Participantes 2