Boa tarde, Estou utilizando JSF Facelets. E estou com a seguinte dúvida:
Tenho uma lista de listas
List<TabelaOpotunidade> listaTabelaOportunidade
Aonde a classe TabelaOpotunidade contém uma lista que representa uma tabela. Eu gostária de exibir cada uma destas listas em uma tabela (na tela) diferente.
Estou tentando usar uma combinação de ui:repeat com o:dataTable entretanto estou enfrantando um comportamento anomalo ao tentar realizar ações com os itens selecionados destas dataTable. Observem o trecho de código:
<ui:repeat var="tabelaOportunidade" value="#{multiplasTabelasOportunidadeBean.listaTabelaOportunidade}">
<h:form>
<div class="gp-padding-tabela">
<h2> <h:outputLabel value="#{tabelaOportunidade.nomeTabela}"/> </h2>
<hr />
<o:dataTable var="item"
value="#{tabelaOportunidade.tabela}"
width="285px" useAjax="true"
pageSize="10" sortColumnId ="columnNome"
sortedColumnHeaderClass="gp-treeTableHeaderSection-sorted"
headerSectionClass="gp-treeTableHeaderSection"
headerSectionStyle="text-align:left"
bodyOddRowClass="gp-treeTableOddRow"
bodyRowClass="gp-treeTableRow"
footerSectionClass="gp-treeFooterSection"
horizontalGridLines="1px solid white"
verticalGridLines="1px solid white"
headerHorizSeparator="1px solid white"
headerVertSeparator="1px solid white"
styleClass="gp-treeTable"
sortAscending="false">
<f:facet name="noDataMessage">
<h:outputText value="#{msg.nao_existe_registro}" />
</f:facet>
<o:singleRowSelection styleClass="gp-selection"
rowData="#{manterOportunidadesBean.oportunidadeSelecionada}"/>
<f:facet name="footer">
<o:dataTablePaginator styleClass="gp-paginator"
firstImageUrl="/imagens/arrowFirst.gif"
firstDisabledImageUrl="/imagens/arrowFirstDisabled.gif"
previousImageUrl="/imagens/arrowPrevious.gif"
previousDisabledImageUrl="/imagens/arrowPreviousDisabled.gif"
nextImageUrl="/imagens/arrowNext.gif"
nextDisabledImageUrl="/imagens/arrowNextDisabled.gif"
lastImageUrl="/imagens/arrowLast.gif"
lastDisabledImageUrl="/imagens/arrowLastDisabled.gif"
pageCountPreposition="#{msg.manter_modelos_mensagem_of}"
pageNumberPrefix="#{msg.manter_modelos_mensagem_page}"/>
</f:facet>
<o:column id="columnNome" style="width:100px;"
styleClass="gp-al-left" sortingExpression="#{item.nome}">
<f:facet name="header">
<h:outputText value="Nome"/>
</f:facet>
<h:outputText value="#{item.nome}" />
</o:column>
...
<o:column id="linkVisualizar" align="center" style="width:15px">
<h:commandButton image="/imagens/prova.gif" action="#{manterOportunidadesBean.visualizarOportunidade}"/>
</o:column>
<o:column id="linkEdicao" align="center" style="width:15px">
<h:commandButton image="/imagens/lapis.gif" action="#{manterOportunidadesBean.editarOportunidade}/>
</o:column>
</o:dataTable>
</div>
<br/>
</h:form>
</ui:repeat>
As tabelas são exibidas corretamente na tela, entretanto as "action"s dos commandButton se comportam de maneira estranha. Algumas linhas funcionam, outras não setam o item selecionado no beam mas redirecionam para a página correta e outras apenas chamam a própria pagina novamente. Outro comportamento estranho é que as linhas que funcionam chamam o método de setar o item selecionado X vezes onde o X é o numero de tabelas.
Já tentei trocar o ui:repeat por outros mecanismos de loop como a4j:repeat, t:dataList e até o próprio o:dataTable.
e tentei trocar o commandButton por commandLink e também não funcionou direito.
Alguém tem idéia do que possa estar ocorrendo? ou alguma outra maneira melhor de fazer o que preciso?
Obrigado.
Até