如何在GSP页面中递归列出子项?

时间:2013-01-30 23:48:19

标签: grails recursion tags gsp

我有一个媒体域

def Media {
   String name

   static belongsTo = [parent:Media]
   static hasMany = [children:Media]
}

在show.gsp页面中,我想将所有我的根媒体(没有父母)列入ul列表,将他们的孩子和他们的孩子递归到另一个ul列表中。我已经使用Tag作为第一个列表,但我不知道如何为孩子们递归地执行此操作。

那你知道怎么做吗?

感谢。

1 个答案:

答案 0 :(得分:8)

您可以将递归部分放入GSP模板中,然后递归调用它,例如:

index.gsp:假设rootMedias已传入视图

<g:each in="${rootMedias}" var="media">
    <g:render template="step" model="${[media: media]}" />
</g:each>

_step.gsp

<ul>
    <g:each in="${media.children}" var="child">
    <li>
        ${child.name}
        <g:render template="step" model="${[media: child]}" />
    </li>
    </g:each>
</ul>