如何在FreeMarker中将列表拆分为4个项目组?

时间:2014-04-23 15:32:52

标签: freemarker

我有一个像这样的HTML列表:

<ul>
    <li>lorem lipsum..</li>
    <li>lorem lipsum..</li>
    <li>lorem lipsum..</li>
    <li>lorem lipsum..</li>
    <li>lorem lipsum..</li>
    <li>lorem lipsum..</li>
    <li>lorem lipsum..</li>
    <li>lorem lipsum..</li>
</ul>

我想将列表拆分为4个项目组:

<ul>
    <li class="group1">
        <ul>
            <li>lorem lipsum..</li>
            <li>lorem lipsum..</li>
            <li>lorem lipsum..</li>
            <li>lorem lipsum..</li>
        </ul>   
    </li>
    <li class="group2">
        <ul>
            <li>lorem lipsum..</li>
            <li>lorem lipsum..</li>
            <li>lorem lipsum..</li>
            <li>lorem lipsum..</li>
        </ul>   
    </li>
</ul>

我尝试了chunk

<ul>
    <#assign seq = nav.getChildren()>
    <#list seq?chunk(4) as row>
        <#list row as nav_child>
            <li class="${nav_class}">
                <ul>
                    <li>${nav_child.getName()}</li>
                </ul>   
            </li>
        </#list>
    </#list>
</ul>

适用于每个li,而不适用于4 li组。因此每个li都是li > ul内的包装器。 如何在li内包裹4 li > ul

任何帮助表示赞赏!谢谢!

1 个答案:

答案 0 :(得分:1)

像这样(重点是#list - s的位置,但为了更好的可读性,我也进行了一些其他更改):

<ul>
    <#list nav.children?chunk(4) as navChildGroup>
        <li class="${nav_class}">
            <ul>
                <#list navChildGroup as navChild>
                    <li>${navChild.name}</li>
                </#list>
            </ul>   
        </li>
    </#list>
</ul>