繁体   English   中英

Grails:g:each标签中的GSP变量替换

[英]Grails: GSP variable substitution in g:each tag

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

<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}替换不起作用。 有什么想法可以使它起作用吗?

尝试这个:

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

有趣的是,我从来没有像Kelly建议的那样在gsp内使用评估。 但是我可以建议一种不太理想的方法吗?

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

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

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

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

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

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

   ${table.name}

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

</g:each>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM