Liferay 速度模板和结构。获得 Children 个 Children 个?

Liferay Velocity Templates & Structures. Get Children of Children?

我正在使用 Liferay 6.1 中的结构和模板。 当试图获取 children 行时,似乎使用循环访问信息的唯一方法是使用类似于以下的代码:

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

有谁知道如何访问 children 的 children 的数据?我已经尝试通过 Velocity user-guide 搜索示例,但无法正常工作。

如果有人能给我指出正确的方向或link一些他们认为可行的代码,我们将不胜感激。

非常感谢,

周杰伦

#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

您只需要嵌套迭代来获取子项的子项,这在每种编程语言中都适用。

@jkonst 给出了正确答案。这里有一些额外的信息,供您更多地探索速度。考虑只使用 $this.getChildren().getClass().getName() - 这将打印支持 Java 对象的 class,为您提供更多关于如何处理它的提示。与 $this.getChildren().get(0).getClass().getName().

相同

当然,您只会使用它来探索和调试您的速度模板,但它有助于了解如何处理各个对象。

以防万一其他人遇到这个问题。解决方案似乎是

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

根据child的位置替换括号中的数字。