0

ループ内にループがあり、最初の変数の値を2番目の変数に置き換えたいと思います。以下はコードスニペットです。

<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>

2番目の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に任意のオブジェクトを渡すことができることを知っていますか?マップ(マップをエミュレートしようとしているのですが、理由はわかりません)でさえ、次のように使用します。

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

ここで、displayColumnsは、各テーブルの列を含むマップです。

ところで、よりクリーンな方法は、このデータを含む特別なオブジェクトを使用することです。そのようなTableDetailsものにはList<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 に答える
0

興味深いことに、ケリーが示唆しているように、私はgsp内でevaluateを使用したことがありません。しかし、私はより最適でないアプローチを提案できますか?

http://grails.org/doc/2.0.x/ref/Tags/set.html${table.name}を使用して変数内に格納できます。<g:set>

于 2012-04-25T02:38:51.767 に答える