[RESOLVIDO]..rich:tree com AJAX ! alguém ja usou?

…boa tarde a todos !!!

…algué ai ja utilizou o componente TREEVIEW (TREE) do richFaces com AJAX em alguma aplicação ou exemplo que desenvolveu ??? …tem como construir no estilo PASSO A PASSO, tipo, nos exemplos que vi (http://livedemo.exadel.com/richfaces-demo/richfaces/tree.jsf?c=tree) os todos os NÓS são construidos de uma vez só, isso em aplicações de grande porte pode ser crítico ao que se refere a desempenho, quero construir os NÓS dinamicamente mais ou menos com base no Onclick realizado em um determinado elemento realizar a busca dos elementos filhos …alguém conhece algum material bom que fale sobre isso ou até mesmo outro compoente que trabalhe dessa maneira ??? …achei o DeveloperGuide do RichFaces bem fraquinho …

…qualquer ajuda e muito bem vinda !!!

grato !!! :cry:

E ae Breffo, conseguiu resolver o problema, estou tendo dificuldades em fazer a mesma coisa, se puder me ajudar

…consegui sim, usei este exemplo:

http://livedemo.exadel.com/richfaces-demo/richfaces/treeNodesAdaptor.jsf;jsessionid=1309E9F2C401BE15539D6F87E2CBB11F?c=recursiveTreeNodesAdaptor

…todo o código fonte é disponibilizado no próprio SITE, basta implementar a sua Lógica e fazer as adaptações necessarias para a tua aplicação.
…o exemplo utiliza chamadas recursivas, com isso, os NÓS FILHOS são construidos dinamicamente de acordo com a estrutura estabelecida
pelo BackBean …

…boa sorte !!!

ola.
td bem eu sei como faço uso componente web, mas será que alguem poderia retratar como a classe funciona com seus respectivos objetos.

tipo

<ui:composition xmlns=“http://www.w3.org/1999/xhtml
xmlns:ui=“http://java.sun.com/jsf/facelets
xmlns:h=“http://java.sun.com/jsf/html
xmlns:f=“http://java.sun.com/jsf/core
xmlns:a4j=“http://richfaces.org/a4j
xmlns:rich=“http://richfaces.org/rich”>

<p>This is exactly the same tree, but now it uses "client" switch type. Note, that all nodes actually rendered up-front and expand/collapse now do not requre server call</p>
<h:form>
    <rich:tree switchType="client" style="width:300px" value="#{library.data}" var="item" nodeFace="#{item.type}">
        <rich:treeNode type="artist" iconLeaf="/images/tree/singer.gif" icon="/images/tree/singer.gif">
            <h:outputText value="#{item.name}" />
        </rich:treeNode>
        <rich:treeNode type="album" iconLeaf="/images/tree/disc.gif" icon="/images/tree/disc.gif">
            <h:outputText value="#{item.title}" />
        </rich:treeNode>
        <rich:treeNode type="song" iconLeaf="/images/tree/song.gif" icon="/images/tree/song.gif">
            <h:outputText value="#{item.title}" />
        </rich:treeNode>
    </rich:tree>
</h:form>

library é de um tipo map?LIST?qual?

…e ai Leandro blz ??? …bom cara, ai vai um exemplo:

1º BackBen

@SuppressWarnings("serial")
public class TreeBean extends ManagedBean{
		
        private Object					data;
        private UITree					uiTree;

	/**
	 * Métod que deve conter a lógica para renderizar a tua TREE dinâmicamente
	 * @return Object
	 */
	public Object getData() {
		if(data == null){
			TreeNode raiz = new CustomTreeNode();
                        for(int i = 0; i < 20; i ++){
                              TreeNode  node = new CustomTreeNode();
                               //adiciona o PAI
                               node.setParent(raiz);
                              //associa os filhos
                              raiz.addChild(node);
                         }
		}
		return data;
	}

     //get's + set's
}

…o RichFaces disponibiliza uma interface chamada TreeNode

org.richfaces.model.TreeNode

…pra fazer o bicho funcionar dinâmicamente vc vai ter que implementar um CUSTOM, mais isso e coisa simples, o Rich já traz algumas implementações default pronta pra usar, pro meu caso tive que implementar aqui …

…na tua JSP vc coloca:


<a4j:region id="tempo">
		<!-- esse trecho é so pra renderizar um GIF enqto a TREE é construida -->
               <a4j:status>
			<f:facet name="start">
				<h:graphicImage value="#{msg.gif_ajax1}" />
			 </f:facet>
			 <f:facet name="stop">
			          <h:graphicImage value="#{msg.icon_null}" />
			  </f:facet>
		</a4j:status>
					
		 <rich:tree 
		                 var="item" 
				 switchType="ajax" 
				 toggleOnClick="true"
				 requestDelay="500"
                                 <!-- contem objetos do tipo TreeNode de acordo com o metodo do BackBean -->
				 value="#{treeBean.data}" 
                                 <!-- o binding garante o estado da arvore entre uma requisicao e outra -->
				 binding="#{treeBean.uiTree}">  
				                       
			         
			          <!-- meus command link' são construidos com base nos NOS retornados pela TREE -->         
				  <rich:treeNode type="menu">
						<h:commandLink immediate="true" value="#{item.label}" action="#{treeBean.executeMethod}">
						   <a4j:support event="onchange"/> 
						</h:commandLink>
				   </rich:treeNode>
		</rich:tree>
</a4j:region>

…espero ter ajudado, boa sorte !!!

opa desculpa cara. ter demoraqdo para responder…

tinha deixado este assunto um pouco de lado, agora que retornei estou implementando este componente.

Valeu cara , ajudou bastante.

T+