0

我在循环中有一个循环,并且想将第一个 var 的值替换为第二个。下面是代码片段。

<g:each in="${tables}" status="i" var="table">
    <div class="tabletitle">
        ${table.name}
    </div>
    <table>
        <thead>
            <tr>
            <g:each in="${${table.name}DisplayColumns}" status="k" var="displayColumn">
                <td>${displayColumn}</td>
            </g:each>
            </tr>
        </thead>
        <tbody>
            ....
            ....
        </tbody>
    </table>
</g:each>

第二个 g:each 标签中的 ${table.name} 替换不起作用。有什么想法让它发挥作用吗?

4

3 回答 3

3

尝试这个:

    <g:each in="${evaluate(table.name+'DisplayColumns')}" status="k" var="displayColumn">
于 2012-04-24T23:01:13.060 回答
0

有趣的是,正如凯利建议的那样,我从未在 gsp 中使用评估。但是我可以建议一种不太理想的方法吗?

您可以使用(http://grails.org/doc/2.0.x/ref/Tags/set.html)存储${table.name}在变量中<g:set>

于 2012-04-25T02:38:51.767 回答
0

你知道你可以将任何对象传递给 GSP 吗?甚至地图(您正在尝试模拟地图,我不知道为什么),并像这样使用它:

<g:each in="${displayColumns[table.name]}">

其中 displayColumns 是一个包含每个表的列的 Map。

顺便说一句,更干净的方法是使用包含此数据的特殊对象。类似的东西TableDetailsList<String> getColumns()方法。所以你可以使用

<g:each in="${tables}" var="table">

   ${table.name}

   <g:each in="${table.columns}" var="column">
     ${column}
   </g:each>

</g:each>
于 2012-04-25T06:04:14.333 回答