Grails:g中的GSP变量替换:每个标记

时间:2012-04-24 22:13:32

标签: grails gsp

我在循环中有一个循环,想要将第一个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中的

$ {table.name}替换:每个标记都不起作用。有什么想让它发挥作用吗?

3 个答案:

答案 0 :(得分:3)

试试这个:

    <g:each in="${evaluate(table.name+'DisplayColumns')}" status="k" var="displayColumn">

答案 1 :(得分:0)

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

您可以使用${table.name}http://grails.org/doc/2.0.x/ref/Tags/set.html

<g:set>存储在变量中

答案 2 :(得分:0)

您知道可以将任何对象传递给GSP吗?即使是地图(您尝试模拟地图,我也不知道为什么),并使用它:

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

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

顺便说一句,更干净的方法,就是使用包含这些数据的特殊对象。类似于TableDetails的{​​{1}}方法。所以你可以使用

List<String> getColumns()