DataTable com relacionamento N-N

0 respostas
D

Opa :smiley:

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());
}
Criado 22 de julho de 2008
Respostas 0
Participantes 1