Fala galera, seguinte tenho um dataTable onde carrego os grupos
existentes na minha aplicação. Neste dataTable tenho alguns botões com as finalidades de: add um novo grupo, alterar um grupo, excluir um grupo e adicionar um subGrupo
àquele grupo. Além disso tenho um botão que abre um dialog com um dataTable dentro que carrega todos os subGrupos
daquele Grupo
. Acontece que o dialog não carrega os dados, olhando o sql gerado pelo hibernate vejo que ele mostra 3x a mesma sql em sequência, porém a primeira vez q a sql é mostrada ela está correta (traz a lista de subGrupos) e as outras duas apirações não me retorna nada (inclusi perde os parametros do grupo). Onde será que está o problema ? ja tentei renderizar componentes diferentes, tentei colocar fora do form geral e nada adiantou… segue o código da página. Desde já agradeço!
<?xml version="1.0" encoding="UTF-8"?>
<!--
To change this license header, choose License Headers in Project Properties.
To change this template file, choose Tools | Templates
and open the template in the editor.
-->
<!DOCTYPE html 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:c="http://java.sun.com/jsp/jstl/core"
xmlns:p="http://primefaces.org/ui" template="../main.xhtml">
<ui:define name="content">
<h:form id="fmGrupoCusto">
<p:growl id="msgs" showDetail="true"/>
<p:commandButton id="btnAdd" value="Novo" action="#{grupoCustoController.adicionar()}"
icon="fa fa-plus" class="btn btn-primary btn-sm" style="margin-bottom: 7px;"/>
<p:dataTable id="actorsTable" var="grupo" value="#{grupoCustoController.listaGrupos}"
selectionMode="single" rowKey="#{grupo.id}" paginator="true" rows="10"
paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
rowsPerPageTemplate="10,20,30">
<f:facet name="header">
<h3>Lista de Grupos do Centro de Custo</h3>
</f:facet>
<p:column headerText="Código" sortBy="#{grupo.id}" filterBy="#{grupo.id}" style="width: 68px;">
<h:outputText id="cod" value="#{grupo.id}"/>
</p:column>
<p:column headerText="Nome Grupo" sortBy="#{grupo.nomeGrupo}" filterBy="#{grupo.nomeGrupo}" style="width: 250px;">
<h:outputText id="nome" value="#{grupo.nomeGrupo}"/>
</p:column>
<p:column headerText="Ações" style="width: 140px; text-align: center;">
<div style="margin-bottom: 3px;">
<p:commandButton id="btnSubGrupo" icon="fa fa-plus" class="btn btn-default btn-sm"
action="#{grupoCustoController.adicionarSubGrupo()}" value="Subgrupo">
<f:setPropertyActionListener value="#{grupo}" target="#{subGrupoCustoController.grupoCusto}"/>
</p:commandButton>
</div>
<div>
<p:commandButton update=":fmGrupoCusto:subGrupoList"
oncomplete="PF('subGrupoDialog').show()"
icon="fa fa-search"
class="btn btn-success btn-sm"
title="Visualizar">
<f:setPropertyActionListener value="#{grupo}" target="#{grupoCustoController.grupoSelecionado}" />
<p:ajax event="click" listener="#{grupoCustoController.getSubGrupoList(grupo.id)}" update=":fmGrupoCusto" immediate="true"/>
</p:commandButton>
<p:commandButton id="btnEdit"
icon="fa fa-edit"
class="btn btn-info btn-sm" title="Alterar"
update=":fmGrupoCusto"
action="#{grupoCustoController.carregarGrupoCusto(grupo)}"/>
<p:commandButton id="btnExcluir"
icon="fa fa-trash"
class="btn btn-danger btn-sm"
title="Remover"
update=":fmGrupoCusto"
action="#{grupoCustoController.deletar(grupo)}">
<p:confirm header="Confirmação" message="Deseja realmente excluir este Grupo de Custo?" icon="fa fa-info-circle" />
</p:commandButton>
</div>
</p:column>
</p:dataTable>
<!--Confirmação excluir-->
<p:confirmDialog global="true" showEffect="fade" hideEffect="fade">
<div style="margin: auto; width: fit-content;">
<p:commandButton value="Sim" styleClass="ui-confirmdialog-yes" icon="fa fa-check" />
<p:commandButton value="Não" styleClass="ui-confirmdialog-no" icon="fa fa-close" />
</div>
</p:confirmDialog>
<p:dialog header="Subgrupos Existentes" widgetVar="subGrupoDialog" modal="true"
showEffect="fade" hideEffect="fade" resizable="false" draggable="false"
appendTo="@(body)">
<p:outputPanel id="subGrupoList" style="text-align:left;">
<p:dataTable id="dtSubGrupos" var="subGrupo" value="#{grupoCustoController.getSubGrupoList(grupoSelecionado.id)}"
editable="true" style="margin-bottom: 20px;">
<f:facet name="header">
Subgrupos
</f:facet>
<p:column headerText="Código">
<p:cellEditor>
<f:facet name="output"><h:outputText value="#{subGrupo.id}"/></f:facet>
<f:facet name="input"><p:inputText id="codInput" value="#{subGrupo.id}" style="width: 5px;"/></f:facet>
</p:cellEditor>
</p:column>
<p:column headerText="Nome">
<p:cellEditor>
<f:facet name="output"><h:outputText value="#{subGrupo.nomeSubGrupo}"/></f:facet>
<f:facet name="input"><p:inputText id="nomeInput" value="#{subGrupo.nomeSubGrupo}" style="width: 140px;"/></f:facet>
</p:cellEditor>
</p:column>
<p:column style="width:50px;">
<p:rowEditor />
</p:column>
</p:dataTable>
</p:outputPanel>
</p:dialog>
</h:form>
</ui:define>
</ui:composition>