Olá amigos, antes de tudo a minha solução já foi achada, mas tenho certeza que esta errada, portanto gostaria de aprender como fazer de forma correta ok.
Pois bem, baseado na versão 2.2.1 do primefaces eu meio que descobri que se voce tentar juntar as varias formas da datatable meio que não funciona, ta da versao 3 muitos dos meus problemas já estão resolvidos, mas estou em produção portanto portar meu sistema para a versão 3 esta totalmente fora de questão.
O que acontece?
Tenho uma datatable principal que tem um expand row que se liga a outra datatable que tem selectionMode=“single” e quando clicado abre u, simplesm dialog, modo classico sem problemas até ai.
A partir dai que começa os problemas, simplesmente quando submeto o form o Bean vai com valores null, ai achei a tal solução que na minha opinião é errada.
FacesContext facesContext = FacesContext.getCurrentInstance();
Map<String, String> map = facesContext.getExternalContext().getRequestParameterMap();
Claro a partir dai tenho todos os valores do campos via ID que estão lá no MAP, mas em outros forms que tem basicamente a mesma coisa, datatable + dialog + submit funciona na boa a unica diferença é que nesse form tenho o tal expand row.
A grande pergunta o que estou fazendo de errado ou essa é a unica solução mesmo??
Haaaa… se olharem o codigo verão que estou utilizando o process=@form , mas acreditem já tentei todos @all, @this, @etc
Desde já agradeço qualquer ajuda
Abraços
Jomello
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.prime.com.tr/ui"
template="../templates/principal.xhtml">
<ui:define name="content" id="content">
<h1 class="title ui-widget-header ui-corner-all">Bem Vindo ao Cadastro de Subscrição</h1>
<h:form id="formSub" prependId="false">
<p:dataTable id="tabSubCliente" var="subCliente" value="#{subscricaoBean.lazyModel}"
widgetVar="wtabSubCliente" dynamic="true" emptyMessage="Nenhum Registro Retornado"
rowIndexVar="rowIndexSubCliente" selection="#{subscricaoBean.selectedSubscricao}"
update="tabSubscricao">
<p:column style="width:16px">
<p:rowToggler />
</p:column>
<f:facet name="header">
Selecione uma linha e clique para Manutenção
<p:commandButton value="Novo" update="display" action="#{subscricaoBean.novo}" oncomplete="subscricaoDialog.show()" process="@this" />
</f:facet>
<p:column style="width:800px" headerText="Acionista">
<h:outputText value="#{subCliente.idCliente.nomCliente}" />
</p:column>
<p:rowExpansion>
<p:dataTable id="tabSubscricao" var="sub" value="#{subscricaoBean.lazyModelSub}"
widgetVar="wtabSubscricao" paginator="true" rows="5" dynamic="true"
rowIndexVar="rowIndexSub" selection="#{subscricaoBean.selectedSub}" selectionMode="single"
onRowSelectComplete="subscricaoDialog.show()" onRowSelectUpdate="display"
rowSelectListener="#{subscricaoBean.onSelectRow}">
<f:param name="clienteRow" value="#{rowIndexSub}" />
<p:column headerText="Data Movimentação" sortBy="#{sub.datSubscricao}">
<h:outputText value="#{sub.datSubscricao}">
<f:convertDateTime type="date" dateStyle="short" pattern="dd/MM/yyyy"/>
</h:outputText>
</p:column>
<p:column headerText="Subscritas" sortBy="#{sub.qdeSubscrita}" style="width:200px; text-align: right;">
<h:outputText value="#{sub.qdeSubscrita}">
<f:convertNumber locale="pt_BR" pattern="###,###,##0.00" minFractionDigits="0" />
</h:outputText>
</p:column>
<p:column headerText="Valor Realizado" sortBy="#{sub.vlrRealizado}" style="width:200px; text-align: right;">
<h:outputText value="#{sub.vlrRealizado}">
<f:convertNumber locale="pt_BR" pattern="###,###,##0.00" minFractionDigits="2" />
</h:outputText>
</p:column>
<p:column headerText="Valor Realizado" sortBy="#{sub.vlrRealizar}" style="width:200px; text-align: right;">
<h:outputText value="#{sub.vlrRealizar}">
<f:convertNumber locale="pt_BR" pattern="###,###,##0.00" minFractionDigits="2" />
</h:outputText>
</p:column>
<p:column headerText="Anotação" sortBy="#{sub.idAnotacao.dscAnotacao}">
<h:outputText value="#{sub.idAnotacao.dscAnotacao}" />
</p:column>
</p:dataTable>
</p:rowExpansion>
</p:dataTable>
<!-- DETALHES SUBSCRICAO -->
<p:dialog id="dialog" header="Detalhes Subscrição" widgetVar="subscricaoDialog" resizable="true"
width="1000" showEffect="explode" hideEffect="explode">
<h:panelGrid id="display" columns="2" style="margin-bottom:50px" cellpadding="5">
<h:outputText value="Acionista:" />
<h:panelGrid columns="2">
<p:inputText id="inCliente" value="#{subscricaoBean.selectedSub.idCliente.nomCliente}" readonly="true"
style="width:700px; font-weight:bold;" />
<p:commandButton image="ui-icon ui-icon-search" title="Pesquisar Acionista" onclick="clienteDialog.show()" process="@this" />
</h:panelGrid>
<h:outputText value="Anotaçã0:" />
<h:panelGrid columns="2">
<p:inputText id="inAnotacao" value="#{subscricaoBean.selectedSub.idAnotacao.dscAnotacao}" readonly="true"
style="width:700px; font-weight:bold;" />
<p:commandButton image="ui-icon ui-icon-search" title="Pesquisar Anotação" onclick="anotacaoDialog.show()" process="@this" />
</h:panelGrid>
<h:outputText value="Data Subscrição:" />
<p:calendar id="inDatSubscricao" value="#{subscricaoBean.selectedSub.datSubscricao}" pattern="dd/MM/yyyy" />
<h:outputText value="Qde.Subscritas:" />
<p:inputText id="qdeSubscrita" widgetVar="qdeSubscrita" value="#{subscricaoBean.selectedSub.qdeSubscrita}"
style="width:200px; font-weight:bold; text-align: right;"
onkeyup="javascript:maskIt(this,event,'###.###.###',true)">
<f:convertNumber locale="pt_BR" pattern="###,###,##0.00" minFractionDigits="0" />
</p:inputText>
<h:outputText value="Valor Realizado:" />
<p:inputText id="vlrRealizado" widgetVar="vlrRealizado" value="#{subscricaoBean.selectedSub.vlrRealizado}"
style="width:200px; font-weight:bold; text-align: right;"
onkeyup="javascript:maskIt(this,event,'###.###.###,##',true)">
<f:convertNumber locale="pt_BR" pattern="###,###,##0.00" minFractionDigits="2" />
</p:inputText>
<h:outputText value="Valor a Realizar:" />
<p:inputText id="vlrRealizar" widgetVar="vlrRealizar" value="#{subscricaoBean.selectedSub.vlrRealizar}"
style="width:200px; font-weight:bold; text-align: right;"
onkeyup="javascript:maskIt(this,event,'###.###.###,##',true)">
<f:convertNumber locale="pt_BR" pattern="###,###,##0.00" minFractionDigits="2" />
</p:inputText>
<h:inputHidden id="idCliente" value="#{subscricaoBean.selectedSub.idCliente.idCliente}" />
<h:inputHidden id="idAnotacao" value="#{subscricaoBean.selectedSub.idAnotacao.idAnotacao}" />
</h:panelGrid>
<p:commandButton value="Inserir" update="messages,tabSubCliente,tabSubscricao,display"
actionListener="#{subscricaoBean.inserir}" oncomplete="subscricaoDialog.hide()" process="@form" />
<p:commandButton value="Alterar" update="messages,tabSubCliente,tabSubscricao,display"
actionListener="#{subscricaoBean.alterar}" oncomplete="subscricaoDialog.hide()" process="@form" />
<p:commandButton value="Excluir" onclick="confirmation.show()" type="button" />
</p:dialog>
<!-- PESQUISA ACIONISTA -->
<p:dialog id="dialogCliente" header="Pesquisa dos Acionistas" widgetVar="clienteDialog" resizable="true"
width="800" showEffect="explode" hideEffect="explode" position="'right',30">
<p:dataTable id="tabClientePesq" widgetVar="wtabClientePesq" var="cliente"
value="#{clienteBean.lazyModel}" paginator="true" rows="10" lazy="true"
selection="#{subscricaoBean.selectedSub.idCliente}" selectionMode="single"
onRowSelectUpdate="messages, display" onRowSelectComplete="clienteDialog.hide()">
<f:facet name="header">
Selecione uma linha clique para Seleção
</f:facet>
<p:column headerText="Razão Social / Nome" sortBy="#{cliente.nomCliente}" filterBy="#{cliente.nomCliente}">
<h:outputText value="#{cliente.nomCliente}" />
</p:column>
<p:column headerText="C.N.P.J. / C.P.F." sortBy="#{cliente.numCpf}" filterBy="#{cliente.numCpf}" style="text-align: center;">
<h:outputText value="#{cliente.numCpf}">
<f:converter converterId="mascaraConverter" />
<f:attribute name="tipo" value="#{cliente.tipCliente}" />
</h:outputText>
</p:column>
<p:column headerText="Tipo" sortBy="#{cliente.tipCliente}" filterBy="#{cliente.tipCliente}"
filterOptions="#{clienteBean.tipClienteOptions}" filterMatchMode="exact">
<h:outputText value="#{cliente.dscTipo}" />
</p:column>
<p:column headerText="Qde.Ações" sortBy="#{cliente.qdeAcao}" filterBy="#{cliente.qdeAcao}" style="text-align: right">
<h:outputText value="#{cliente.qdeAcao}" />
</p:column>
</p:dataTable>
</p:dialog>
<!-- PESQUISA ANOTACAO -->
<p:dialog id="dialogAnotacao" header="Pesquisa Anotação" widgetVar="anotacaoDialog" resizable="true"
width="800" showEffect="explode" hideEffect="explode" position="'right',30">
<p:dataTable id="tabAnotacao" widgetVar="wtabAnotacao" var="anotacao" value="#{anotacaoBean.lazyModel}" paginator="true" rows="10" lazy="true"
emptyMessage="Nenhum Registro Retornado ..."
selection="#{subscricaoBean.selectedSub.idAnotacao}" selectionMode="single"
onRowSelectComplete="anotacaoDialog.hide()" onRowSelectUpdate="display">
<f:facet name="header">
Selecione uma linha e clique para Seleção
</f:facet>
<p:column headerText="Descrição" sortBy="#{anotacao.dscAnotacao}" filterBy="#{anotacao.dscAnotacao}">
<h:outputText value="#{anotacao.dscAnotacao}" />
</p:column>
</p:dataTable>
</p:dialog>
<!-- CONFIRMACAO EXCLUSAO -->
<p:confirmDialog message="Confirma a Exclusão dessa Subscrição?" header="Exclusão da Subscrição" severity="alert" widgetVar="confirmation">
<p:commandButton value="Sim" update="messages,tabSubCliente,tabSubscricao,display" oncomplete="confirmation.hide(),subscricaoDialog.hide()"
actionListener="#{subscricaoBean.excluir}" process="@form" />
<p:commandButton value="Não" onclick="confirmation.hide()" type="button" />
</p:confirmDialog>
</h:form>
</ui:define>
</ui:composition>
