Opa 
Tenho uma view que existem 3 views:
- Cadastro de Carga
- Cadastro de Funcionario
- Cadastro de ‘regra’ que linka Carga com Funcionario
Uma mesma carga por ter N funcionarios e o mesmo funcionario pode ter N cargas.
Na view, primeiro cadastramos a carga, depois o funcionario e tem a opção de cadastro da ‘regra’. Como é uma coisa dinâmica e pode-se cadastrar N cargas ou N funcionarios ou N regras de uma única vez, fiz um esquema que vai gerando linhas dinamicamente na dataTable de cada view e inserindo na collection correspondente.
Meu problema está quando vou linkar a Carga com o Funcionario, pq para poder ter o dataTable dinâmico, criei uma 3ª Collection que não faz nada, ela apenas adiciona um Object ( new Object() ) para poder criar a próxima linha. Ai vem a grande pergunta: como posso linkar os 2 objetos?
As soluções que encontrei, são bem porcas e não são muito funcionais. A última que eu fiz foi o seguinte:
View
<h:form>
...
<h:panelGroup id="regrasPanel">
<f:subview id="regrasView" rendered="#{regra.exibirRegra}">
<table width="750px" align="center">
<tr>
<td class="fonteLabel" colspan="4">Dados das Regras<rich:separator width="750px" align="center" title="Dados das Regras"></rich:separator></td>
</tr>
</table>
<h:dataTable value="#{regra.regras}">
<h:column>
<table width="750px" align="center">
<tr>
<td class="fonteLabel">
Tipo da Carga:
</td>
<td>
<h:selectOneListbox immediate="true" value="#{regra.cargas}" size="0">
<f:selectItems value="#{regra.listCargas}"/>
</h:selectOneListbox>
</td>
<td class="fonteLabel">
Funcionario:
</td>
<td>
<h:selectOneListbox immediate="true" value="#{regra.funcionarios}" size="0">
<f:selectItems value="#{regra.listFuncionarios}"/>
</h:selectOneListbox>
</td>
</tr>
<tr>
<td colspan="4" align="right">
<a4j:commandButton reRender="" action="#{regra.removerTipoCarga}" styleClass="botao" value="Remover Tipo de Carga"/>
</td>
</tr>
</table>
</h:column>
</h:dataTable>
<table width="750px" align="center">
<tr>
<td align="left"><a4j:commandButton value="Adicionar Outro Tipo de Regra" styleClass="botao" reRender="" action="#{regra.adicionarRegra}"/></td>
</tr>
</table>
</f:subview>
</h:panelGroup>
...
</h:form>
ManagedBean
private List<Object> regras = new ArrayList<Object>();
//gets e sets
public void exibirSubview(){
regras.add(new Object());
}