5

Grails で Web アプリケーションを作成しています。<select>ドロップリストで動的ロードを実行するために JavaScript に含める必要があるデータのリストがあります。基本的に、サーバーから 2 レベルのリストを取得し、最初のレベルがドロップ ボックスに表示されます。ユーザーがオプションを選択すると、このオプションに関連付けられたリストが別のドロップ ボックスに表示されます。

JavaScript 関数の gsp ページの (簡略化された) コードは次のとおりです。

function selecTipe() {
        var types = ${typeList}
        alert('List of types ' + types )

問題は、typeList が (Groovy で) 次のように定義されている場合です。

typeList = [['TYPE1', ['VAR1','VAR2','VAR3']], 
            ['TYPE2', ['VAR1','VAR2','VAR3']]
            ['TYPE3', ['VAR1','VAR2','VAR3']] ]

ページがレンダリングされると、JavaScript コードは次のようになります。

function selecTipe() {
        var types = [[ TYPE1, [ VAR1, VAR2, VAR3 ]], 
                     [ TYPE2, [ VAR1, VAR2, VAR3 ]]
                     [ TYPE3, [ VAR1, VAR2, VAR3 ]] ]
        alert('List of types ' + types )

JavaScript は文字列としてではなく、引用符がないため参照として扱うため、これは誤りです。

Groovyに引用符付きの配列のリストを強制的に出力させる方法や、これを実現する簡単な方法はありますか?

PD: それを達成するために特定の関数を作成することはできますが、それを行うには簡単な方法である必要があると思います...

編集:単純なリストよりも少し複雑なので、完全なデータ構造を追加しました

4

1 に答える 1

9

grailsコントローラーのアクションでこれを試してください:

def types = ['TYPE1', 'TYPE2', 'TYPE3'] as grails.converters.JSON
[typeList : types]
于 2010-01-14T13:28:56.983 に答える