JSF: ui:repeat + o:dataTable

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é

alguem?