List arvore
21/05/2010 00:00
0
Ola' pessoal!!

Muitas das coisas (acho que foram duas, mas tanto faz) das duvidas que postei aqui acabei aos poucos aprendendo o jeito certo de faze-las. Mas... acabei de me deparar com uma duvida...

Na verdade algumas das duvidas que tive aqui comigo descobri depois que o Grails resolvia sozinho. Mas dessa vez ele nao podera' me ajudar sozinho, eu acho.

Tenho a seguinte situacao:

class Classe1
{
int valor
Classe1 classe1
}


Muito bem, todo cadastro podera' referenciar um outro objeto ou nao (nulllabel:true).

Agora imaginemos que tenhos esses itens cadastrados:

Valor: 1
Classe1:null

Valor:2
Classe1:1

Valor:3
Classe1:1

Valor:4
Classe1:2


Agora preciso mostras esses itens em uma lista do tipo arvore assim:

Valor: 1
______Valor:2
____________Valor:4
______Valor:3

Uhn, deu para entender?
Eu sei como por o css depois que a lista (usarei lista com <lu> e <il>) estiver pronta, e ser fazer cada linha ser uma <il> ... mas ai ficariam todos iguais.
Eu pensei tambem em dar um jeito de o nivel pai do item fosse uma class (css), o que seria util, mas depois como ordenar eu nao sei.

Se alguem tiver uma ideia...

Update
Uhn, e se eu usar o metodo OnLoad...? Ele pode mecher com a list view?
Tags: Grails


0
Sugestão: crie um template recursivo.

Supondo a sua classe1, poderia ser algo assim olha:

Template:


<li>
${objeto.nome}
<!-- Aonde a mágica acontece -->
<g&#58;if test=&quot;${objeto.pai}&quot;>
<g&#58;render template=&quot;/path/pro/template&quot; model=&quot;[objeto&#58;objeto.pai]&quot;/>
</g&#58;if>
</li>


E ai, pra expor indentado, tudo o que você precisaria fazer é algum CSS bobão mesmo.

Outra opção seria a criação de uma tag que se auto-referenciasse que, na prática, seria muito similar a este template.


0
Muito obrigada pela sua resposta.

Enfim, Me passaram uma dica, o que o senhor acha se: no controller da tal Classe1 ter um def list que chama o def listMenu
e nesse list menu uma chamada recursiva que procura se ele tem filhos, imprime na tela e depois volta, procura outro pai e assim vai enquanto tiver objetos...

Sim, quando me disseram isso eu fiquei confusa... ainda nao vi onde chamar isso a partir de um parametro null e como chamar isso na list view...


<!-- s:shock: --><img src="{SMILIES_PATH}/icon_eek.gif" alt=":shock:" title="Shocked" /><!-- s:shock: -->
21/05/2010 00:00


0
Nâo daria certo.
Porque o que estaria rolando é o seu controlador chamando a si mesmo, e isto nao necessáriamente gera a saída. Se você usar só a camada de visualização (ou uma tag mesmo pra deixar mais bonitinho) já funciona beleza.


0
Ah... nao funcionaria?

Por isso nao esta' funcionando!!!

Eu tenho na view uma pagina com uma div list e no controler um metodo list e um listMenu com chamada recursiva procurando e montando todos os filhos e seus pais...

E nao funciona!!

Uhn, agora que o senhor falou eu fiquei ainda mais confusa por que nao sei usar o que o senho sujere... la' vou eu estudar denovo XD
EDIT:

Uhn, seguindo o exemplo eu tentei:

<li>
${classe1.classe1}
<!-- Aonde a mágica acontece -->
<g&#58;if test=&quot;${classe1.classe1}&quot;>
<g&#58;render template=&quot;/path/pro/template&quot; model=&quot;[classe1&#58;classe1.classe1]&quot;/>
</g&#58;if>
</li>


Porem da' erro. Eu realmente acho que nao devo estar entendendo. Nunca usei essa tag, entao me confundi com esse tal model.
24/05/2010 00:00


0
È que é o seguinte Mayoga.

Quando você faz uma action chamar outra action, você vai ter o seguinte problema: no momento em que a primeira action for enviar qualquer coisa para o cliente (o browser, enviar a visualização), ela não pode enviar mais nada, devido a uma limitação do próprio protocolo HTTP.

No entanto, se você usa um template de view, o próprio template já está chamando outro template interno e por ai até acabar a recursão. Como resultado, na hora de enviar os dados para o cliente, envia tudo já de uma vez, e não como uma action que chamaria outra action, e outra, e outra e outra até o infinito, entende?


0
Acho que sim. Eu nao vi que o senhor ja' tinha respondido, entao dei edit no post anterior.

Uhn, estou, agora, tentando entender o model.
24/05/2010 00:00


0
Problema resolvido!

Uhn, acho mais justo quem quiser saber como falar com o mauro, ele que me ajudou.
25/05/2010 00:00



Ainda não faz parte da comunidade???

Para se registrar, clique aqui.


Aprenda Groovy e Grails com a Formação itexto!

Newsletter Semana Groovy

Assinar

Envie seu link!


Livro de Grails


/dev/All

Os melhores blogs de TI (e em português) em um único lugar!

 
Creative Commons
RSS Grails Brasil é mantido por itexto Consultoria.
Em caso de problemas contacte Henrique Lobo Weissmann (Kico) por e-mail: kico@itexto.com.br
Todo o conteúdo presente neste site adota o Creative Commons como licença padrão.
Ver: 4.14.0
itexto