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

7 respostas
breffo

…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:

7 Respostas

spranta

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

breffo

…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 !!!

leandrokjava

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.

leandrokjava

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>
leandrokjava

library é de um tipo map?LIST?qual?

breffo

…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 !!!

leandrokjava

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+

Criado 25 de setembro de 2007
Ultima resposta 25 de mar. de 2008
Respostas 7
Participantes 3