2015-03-09 3 views
4

Я работаю с структурами и шаблонами в Liferay 6.1. При попытке получить ребенок строк представляется, что единственный способ получить доступ к информации с помощью цикла является с кодом похож на это:Liferay Velocity Templates & Structures. Получить детей от детей?

#foreach 
($this in $example.getSiblings()) 
<h2>$this.getData()</h2> 
<p>$this.getChildren().get(0).getData()</p> 
#end 

Кто-нибудь знает, как можно было бы получить доступ к данным для детей дети? Я попытался прочесывать руководство пользователя Velocity для примера, но не могу заставить ничего работать.

Если кто-то может указать мне в правильном направлении или связать код, который, по их мнению, может работать, было бы весьма полезно.

Большое спасибо,

Jay.

ответ

1

На всякий случай кто-то сталкивается с этой проблемой. Решение представляется

$this.getChildren().get(3).getChildren().get(1).getData() 

заменяет цифры в скобках в соответствии с положением ребенка

3
#foreach ($item in $allItems) 
    #set($childrenFirstLevel = $item.getChildren()) 
    #foreach ($childFirstLevel in $childrenFirstLevel) 
     #set($childrenSecondlevel = $childFirstLevel.getChildren()) 
     #foreach ($childSecondLevel in $childrenSecondLevel) 
     <p>$childSecondLevel.data</p> 
     #end 
    #end  
#end 

Вам просто нужны вложенные итерации для получения детей детей, поскольку они хранятся на каждом языке программирования.

1

@jkonst дает верный ответ. Вот вам дополнительная информация для вас, чтобы изучить скорость больше. Подумайте, просто используйте $this.getChildren().getClass().getName() - это будет печатать класс поддерживающего Java-объекта, давая вам больше намеков на то, что с ним делать. То же самое с $this.getChildren().get(0).getClass().getName().

Естественно, вы будете использовать это только для изучения и отладки своих шаблонов скорости, но это помогает понять, что делать с отдельными объектами.

+1

Проверить $ title.fieldName.type.getData() и т. Д. В этом случае «дети» не являются коллекциями, а отдельными полями? Конечно, вам не нужно проходить через них, но у меня создалось впечатление (как @jkonst), что вы на самом деле говорили о вложенных коллекциях. В противном случае начните с $ title.getClass(). GetName() и найдите этот интерфейс. –

Смежные вопросы