Componente tree do struts2

tô testando o componente “tree” do struts 2…
bem legalzinho, usa o dojo e funciona bem, mas eu não consigo colocar um link em uma das folhas da arvore.
alguem ja testou?

o codigo que gera as divs é o seguinte:

<s:tree id="..." label="...">
    <s:treenode id="..." label="..." />
    <s:treenode id="..." label="...">
        <s:treenode id="..." label="..." />
        <s:treenode id="..." label="..." />
    <s:treenode id="..." label="..." />
 </s:tree>

se alguem puder ajudar… :wink:

up?

Eu também estou querendo saber isso.

Não estou conseguindo fazer o componente tree funcionar… Estou fazendo o tree estático mesmo. Mas não aparece nada na tela, nem dá erro nenhum…

...

<s:head theme="ajax" debug="true" />

...

<s:tree id="tree001" label="AAA" title="AA">
        <s:treenode id="tree002" label="BBB" title="BB"/>
        <s:treenode id="tree003" label="CCC" title="CC"/>
</s:tree>

Alguém sabe o que pode ser?

Já consegui fazer o tree funcionar…

...

<s:head theme="ajax" debug="true" />

...

<s:tree label="AAA" theme="ajax">
        <s:treenode label="BBB" theme="ajax"/>
        <s:treenode label="CCC" theme="ajax"/>
</s:tree>

...

Mas agora quero saber, como eu faço para colocar um checkbox em cada nó, ou um link, como o marcuslm perguntou…

Alguém sabe?

Depois de ralar bastante consegui em fim fazer a tag tree dinamica funcionar, ele monta a estrutura da empresa(unidades/setores/etcc.) com mais de 9 mil registros na boa e rapido…

Mas agora estou com o mesmo problemas de vcs… não consigo colocar eventos ao clicar nos registros da árvoes… tipo eu preciso que ao clicar na “folha” da árvore seja acionado a action que abre o formulário com as informações completas daquele registro.

Obs.: Estou usando este mesmo POST para reabrir a discussão.

Desde já agradeço qualquer ajuda.

[]'s

JOKA

Olá galera,
revirei a internet e consegui achar a solução do problema.
Na verdade o principal problema é minha falta de experiencia com DOJO, mas ai vai o código com a solução:

<%@ taglib prefix="s" uri="/struts-tags" %>
<script language="javascript">
  var MyDojoTreeListener = 
  {
    aoClicarTitulo: function(selectedNode)
    {
        alert('Clicou no registro ===> ' + selectedNode.source.title + '  que tem ID = ' +selectedNode.source.widgetId );
    }
  };

  dojo.addOnLoad(function()
  {
    var tree =  dojo.widget.getWidgetById('arv');
    dojo.event.topic.subscribe(tree.eventNames['titleClick'],MyDojoTreeListener,"aoClicarTitulo");
  })
  
</script>
<div id="conteudo_corpo">
<form action="javascript:alert('Executando o form.....');" name="formulario">
	<s:tree
		id="arv"
		name="arv"
	    theme="ajax"
	    rootNode="%{noPrincipal}" 
	    childCollectionProperty="filhas" 
	    nodeIdProperty="id"
	    nodeTitleProperty="nome">
	</s:tree> 
</form>
</div>

Observação: Não estou mencionando a codificação JAVA responsável pela população dos galhos/folhas da árvore, pois o foco é a codificação javascript/dojo que permitiu acionar o evento onClick de cada registro da árvore.

T+

JOKA

www.massafm.com.br/curitiba (seg. a sábado as 7 da manhã)
www.culturasulfm.com.br (todo sábado meio dia)

pra qm conseguiu usar a tag “tree” e pudar dar um toque, pq essa poha n mostra nda, vou postar todos os javas q estou usando :stuck_out_tongue:

Pojo

public class Arvore {

	
	private Long id;
	private String nome;
	private String descricao;
	private Long ip_pai;
	private Set<Arvore> _filhos;
	
	/* **************
	 * construtor
	 */
	public Arvore() {
		System.out.println("criado pai...");
	}
	
	public Arvore(Long id, String nome, String descricao) {
		this.id = id;
		this.nome = nome;
		this.descricao = descricao;
	}
	
	/* **************
	 * metodos auxiliares
	 */
	public void adicionarFilho(Arvore arvore) {
		if (_filhos == null) {
			_filhos = new HashSet<Arvore>();
		}
		_filhos.add(arvore);
		System.out.println("filho adicionado...");
	}
	
	public boolean equals(Arvore arvore) {
		if (this.id == arvore.id) return true;
		return false;
	}

         // sem os getters e setters, ia ficar mto grande o post

o Action

public class ArvoreAction extends ActionSupport {

	public Set<Arvore> lista = new HashSet<Arvore>();
	public Set<Arvore> consulta = new HashSet<Arvore>();
	public Arvore pai;
	public Arvore no;
		

	public String construirArvore() {
		
		pai = new Arvore();
		pai.setId(new Long(0));
		pai.setNome("root");
		pai.setDescricao("raiz da arvore");
		
		for (int i = 1; i <= 11; i++) {
			no = new Arvore(new Long(i), "no"+i, "no filho");
			pai.adicionarFilho(no);
		}
		
		consulta = pai.get_filhos();
		
		return Globals.ACTION_SUCESS; // "sucess"
	}
         // sem getters e setters

arquivo jsp

<%@ taglib prefix="s" uri="/struts-tags" %>

<html>
  <head>
  	<s:head theme="ajax" debug="true"/>
  </head>
  <body>
  	<h3>Arvore que eh bom, nada!! :P </h3>

	<s:tree id="arvoreId" theme="ajax"
  	  rootNode="%(pai)"
  	  nodeIdProperty="id"
  	  nodeTitleProperty="nome"
 	  childCollectionProperty="_filhos" >
 	</s:tree>

    <h3>Exemplo de Iterator</h3>
	 <s:iterator value="consulta">
    	<s:property value="nome" /><br />
    </s:iterator>
      
    </body>
    
</html>

tai o basico, estou tentando fazer uma consulta no banco e montar uma arvore com registro do tipo hierarquico com orgaos e tudo q for relacionado a este aparecer como folhas na arvore, agradeço apartir de ja qlqr ajudar… valeu :slight_smile:

Olá …
Estou precisando fazer um menu dinamico a partir do meu banco de dados…que está divido em categorias e subcategorias em forma de arvore
mas não sei como fazer isso…precisaria de algum exemplo ou dica se possível
Será que pode me ajudar…

Obrigado