如何在没有循环的情况下增加模板中的变量 - Play 2.1.1,Java

时间:2013-09-12 16:52:59

标签: scala playframework-2.0 playframework-2.1 scala-template

我想为HTML列表生成ID。 该列表是从数据库动态生成的。 我不能使用for循环或list.zipWithIndex函数,因为我的逻辑包含一些循环用于生成列表,其中计数器也需要递增。我也尝试使用定义函数,但不允许重新分配这样的值:@{id = id + 1}

什么是完成Id的生成的最好方法?

这是模板的一部分(uniqueId需要用整数替换):

  <div id="tree">
    <ul>
        <li id="uniqueId">
            <a class="dashboard" href="/">Dashboard</a>
        </li>
        <li id="uniqueId">
            <b>Products</b>
            <ul id="uniqueId">
            @for(cat <- Application.allCategories()) { 
              <li id="uniqueId">
                <a class="name" href="@routes.Categories.getd(cat.id).url">@cat.name</a>
              <ul>
                @for(prod <- Application.allProducts()) {
                <li id="uniqueId">
                    <a class="name" href="@routes.Product.getById(prod.id).url">@prod.name</a>
                </li>   
@*more code and the closing tags...*@

1 个答案:

答案 0 :(得分:3)

仅使用...对象的id作为前缀,使其唯一,例如首次列出:

@for(cat <- Application.allCategories()) { 
      <li id="cat_@cat.id">

第二名:

@for(prod <- Application.allProducts()) {
      <li id="prod_@prod.id">

或者如果相同的产品可以在几个类别中显示,也可以使用cat.id作为前缀:

@for(cat <- Application.allCategories()) { 
    <li id="cat_@cat.id">
    @for(prod <- Application.allProducts()) {
        <li id="prod_@(cat.id)_@(prod.id)">