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