0

現在、grails アプリに取り組んでおり、ドメインに保存されているいくつかのオブジェクトをループする際に問題が発生しています。以下にドメインを示します。2 つのオプション (オプション 1、オプション 2) を含むテンプレートをセットアップしました。

class Template {

    String name

    static hasMany = [options:Options]

    static constraints = {
        name blank: false
    }

}

以下は、このデータをビューに渡して処理するコントローラーです。

def create() {

        def template = Template.get(1)
        [systemInstance: new System(params), template: template]

    }

そして最後に、このデータに対して保存された 2 つのオプションをループすると思われる GSP にこのコードがあり、オプションが検出された場合は、いくつかのコードを実行する必要がありました。ただし、このコードを実行すると、奇妙な動作が発生します。

        <%
            System.out.println 'option is: ' + option
        %>

        <g:if test="${option == 'Option1'}">

        <%
            System.out.println 'Inside the IF'
        %>

        </g:if>

このコードを実行すると、ご覧のとおり、使用しているデータを表示するために Print ステートメントを使用します。値「Options1」「Options2」を取得する代わりに、以下を取得します。

option is: [
option is: O
option is: p
option is: t
option is: i
option is: o
option is: n
option is: 1
option is: ,
option is:  
option is: O
option is: p
option is: t
option is: i
option is: o
option is: n
option is: 2
option is: ]
option is: )

以下のコードもテストしましたが、これは「[Options1, Options2]」を返します。

<%
                System.out.println 'option is: ' + template.options.name
            %>

非常に奇妙なので、誰かがこれを手伝ってくれませんか。前もって感謝します。


** *編集* ****


for each ループは次のとおりです。

<g:each var="option" in="${ template.options.name })">

            <%
                System.out.println 'option is: ' + option
            %>

            <g:if test="${option == 'Option1'}">

            <%
                System.out.println 'Inside the IF'
            %>

            </g:if>

</g:each>
4

1 に答える 1

1

タグ内に小さなタイプがありますg:each。クロージングを外し)ます。

この追加のブラケットを使用すると、in属性内の変数は文字列になります。

"[Option1,Option2])"

したがって、リストの要素ではなく、文字列の文字をループしています。

)変数がない場合は のように処理されListますStrings

于 2013-09-02T09:36:58.490 に答える