Recursion Play framework 2.5.X中的递归

Recursion Play framework 2.5.X中的递归,recursion,playframework,playframework-2.0,Recursion,Playframework,Playframework 2.0,我有一个play模板,在其中我循环通过一个包含嵌套列表的对象列表,并使用嵌套for循环以迭代方式显示项目 -技能列表是一个列表[技能] -技能是在模型中定义的对象 -skillObject.getChildrenList返回列表[技能] 我想做的是能够显示它,但使用某种类型的递归,这样,如果mylist的嵌套级别更改,我就不必更改整个模板。那么有没有什么方法可以用递归的方式来实现呢 <div class="custom-dd dd dd-nodrag" id="nestable_list_

我有一个play模板,在其中我循环通过一个包含嵌套列表的对象列表,并使用嵌套for循环以迭代方式显示项目

-技能列表是一个列表[技能]

-技能是在模型中定义的对象

-skillObject.getChildrenList返回列表[技能]

我想做的是能够显示它,但使用某种类型的递归,这样,如果mylist的嵌套级别更改,我就不必更改整个模板。那么有没有什么方法可以用递归的方式来实现呢

<div class="custom-dd dd dd-nodrag" id="nestable_list_1">
<ol class="dd-list">
@for(skill <- skillList) {
    <li class="dd-item">
        <div class="dd-handle dd-nodrag row">
            <span class="dd-nodrag" id="content_@skill.getCleanUri()"> @skill.getLabel() </span>
        </div>

    <ol class="dd-list">
    @for((child, indexChild) <- skill.getChildrenList().zipWithIndex) {
        <li class="dd-item" data-id="@indexChild">
            <div class="dd-handle dd-nodrag row">
                <span id="content_@child.getCleanUri()"> @child.getLabel() </span>
            </div>

            <ol class="dd-list">
            @for((grandChild, indexGrandChild) <- child.getChildrenList().zipWithIndex) {
                <li class="dd-item" data-id="@indexGrandChild">
                    <div class="dd-handle dd-nodrag row">
                        <span id="content_@grandChild.getCleanUri()"> @grandChild.getLabel() </span>
                    </div>

                </li>
            }


            <div class="text-left addNew" id="meta-@index"> 
                <span>
                    <button class="btn btn-icon w-xs plusBtn
                    btn-primary waves-effect waves-light toggleButton" data-toggle="modal" 
                    data-target="#custom-width-modal"> <i class="fa fa-plus" aria-hidden="true"></i> 
                    </button> 
                </span>
            </div>
            @(index = index + 1)

            </ol>
            </li>
    }

    </ol>
    </li>
}

</ol>

提前感谢您的回答。

您可以创建一个单独的模板,将List[Skill]作为参数,并在提供的列表中呈现SkillObject以及这些SkillObject的子对象。然后在主页模板的第一个嵌套级别使用该模板。像下面-

SkillTemplate.scala.html

@(skills: List[Skill])()

<ol class="dd-list">
    @for((child, indexChild) <- skills.zipWithIndex) {
        <li class="dd-item" data-id="@indexChild">
            <div class="dd-handle dd-nodrag row">
                <span id="content_@child.getCleanUri()"> @child.getLabel() </span>
            </div>
            @SkillTemplate(child.getChildrenList())
            <div class="text-left addNew" id="meta-@index"> 
              <span>
                  <button class="btn btn-icon w-xs plusBtn
                    btn-primary waves-effect waves-light toggleButton" data-toggle="modal" 
                    data-target="#custom-width-modal"> <i class="fa fa-plus" aria-hidden="true"></i> 
                  </button> 
              </span>
            </div>
            @(index = index + 1)
         </li>   
    }
</ol>
我还没能测试它