[RESOLVIDO]rich:tree dinamico..alguém já fez?

Fala feras :smiley:

To criando uma interface web de um software de testes e nele existe uma arvore que é criada dinamicamente de acordo com os filhos. O problema é quanto os objetos pais quanto os filhos se encontram na mesma tabela e o que diferencia eles, é o father_id que pode ser -1 ( quando é pai ) ou o id do pai ( diferente de -1 ).

Estava olhando a documentação do rich:tree e notei que eu preciso passar todos os nodes que eu quero e não posso fazer isso pq eu não sei quantos filhos irão ter.

Alguém já fez alguma implementação parecida?

Abraços

ja fiz sim, fiz com o richfaces e com o tomahawk, optei por fzer com o tomahawk, é mais facil …

mas se vai desenvolver uma app q use e abuse do ajax, vale a pena fzer com o richfaces
tree richfaces

ps: eu usei a do tomahawk pq estava convertendo um sistema de modo q ele pudesse utilizar o ajax (richfaces), e daria mto mais trabalha reimplementar a tree, q ja era dinamica, com o richfaces, ai deixei do jeito q estava, so dei suporte ajax a ela … nada mais

Eu tava lendo esse site rs

Meu problema é aquele mapeamento da entidade, pq ele usa uma única coluna para mapear tudo. Vamos lá, tem a coluna RQ_REQ_ID e a coluna RQ_FATHER_ID.

Quando o RQ_FATHER_ID for igual a -1 ( podem ter vários registros com -1 ), significa que ele é o pai e ele tem o RQ_REQ_ID que é a pk da primária. Vamos supor que a pk seja igual a 5.

Ai eu tenho outro registro com o RQ_FATHER_ID com 5. Significa que é o filho do registro anterior. O RQ_REQ_ID dele é 6.

Ai eu tenho um outro registro com o RQ_FATHER_ID é 6. Significa que é o neto do registro com o id 6. Seu RQ_REQ_ID é 7.

E etc.

Entendeu? Eu to com uma grande dificuldade para enxergar as anotações neste caso pq eu posso ter N filhos para um pai. Tem como dar uma força?

pera q eu to tentando encontra o exemplo q eu tinha feito :stuck_out_tongue:

kra esse link me tranquilizou pq eu vi q dava pra fze oq eu queria :stuck_out_tongue:

ai eu fui procurar outras fontes … o exemplo do tree usado no livedemo da exadel foi a chave :smiley:

baseado no exemplo e nos fontes eu consegui montar o meu
aqui tem os fontes do demo

n sei se vai lhe ajudar, mas pra min ajudou :D, so consegui chegar a esse link dps d postar no forum da jboss, pq os fontes estavam “escondidos”

se eu conseguir achar o exemplo eu posto aki :stuck_out_tongue:

Vc tem a função “toggleLayer” deste site?

nem…

Feito :smiley:

Nem precisei fazer nada, useios componentes do JBoss mesmo.

				<rich:recursiveTreeNodesAdaptor var="node"
					roots="#{requirementsMBean.requerimentos}" nodes="#{node.filhos}">
					<rich:treeNode data="#{node.rqReqId}" >
						<h:outputText value="#{node.rqReqName}" />
					</rich:treeNode>
				</rich:recursiveTreeNodesAdaptor>
	@OneToMany(mappedBy="rqFatherId", fetch=FetchType.EAGER)
	private Collection<RequerimentoTO> filhos;

Valeu pela ajuda!

o/

ressucitando o tópico…

tenho uma classe (CentroCusto) que referencia ela mesma:

	@ManyToOne(fetch = FetchType.EAGER)
	@JoinColumn(name="centro_custo_pai", nullable=true)
	private CentroCusto ccPai = null;
	
	@OneToMany(mappedBy = "ccPai", cascade = {CascadeType.ALL}, fetch = FetchType.EAGER)
	private Collection&lt;CentroCusto&gt; filhos;

Aí no meu ManagedBean, eu tenho um método que retorna todos os nós raiz, ou seja, aqueles que não tem pai:

	List&lt;CentroCusto&gt; list = dao.findByTodos(Restrictions.isNull("ccPai"));

O código que faz esta busca não tem nenhum problema, já testei várias vezes.
O problema é que minha árvore no richfaces não retorna todos os dados:

		&lt;rich:tree id="tree" ajaxSubmitSelection="true" switchType="ajax"
			onselected="return false;"&gt;
			&lt;rich:recursiveTreeNodesAdaptor var="node" roots="#{centroCustoFace.centrosCustoRaiz}"
				nodes="#{node.filhos}" &gt;
				&lt;rich:treeNode data="#{node.id}" &gt;
					&lt;!--Node Name--&gt;
					&lt;h:outputText value="#{node.descricao}" /&gt;
					
				&lt;/rich:treeNode&gt;
			&lt;/rich:recursiveTreeNodesAdaptor&gt;
		&lt;/rich:tree&gt;

Ela se limita a exibir somente os nós raiz e mais um nível. Não está fornecendo o comportamento recursivo.

Alguém sabe me informar se eu esqueci de alguma coisa?? O que mais precisa pra esta árvore percorrer a Collection que o Hibernate retornou no método getFilhos() ???

Obrigado

Você já resolveu o problema?
Se não tiver resolvido atualiza tua lib common-collection para a versão mais nova que vai funcionar que é uma beleza. Tambem sofri pra caramba, achei um top nesse mesmo forum aqui, e resolveu o problema.
Valeu

Salve galerinha blz?

Cara to passando perrengue com esse tree dinamica. Consegui faze-la certinha porem to com esse problema citado ai acima, ela soh cria dinamicamente a raiz e mais dois nodes filhos. Alguem ja conseguiu resolver essa bomba?

Grato desde ja!

Olá,
se você olhar nesse link http://community.jboss.org/wiki/RichFacesTreeFAQ verá que ele manda trocar a biblioteca commons-collections menor ou igual a 2.2 para 3.2.
Para resolver o problema dos niveis da arvoré.