次のようなビューから渡されたリストのリストがあります。
[lists:[["e","q"],["t","w"]], action:save, controller:newReport]
私のコントローラーで
def lists = params.lists;
リストは、値が "[["e","q"],["t","w"]]" の文字列になります
リストを反復して各サブリストを取得するにはどうすればよいですか?
JSON.parse を使用します。
groovy:000> lists = JSON.parse("[['e', 'q'], ['w', 'q']]")
===> [["e","q"],["w","q"]]
groovy:000> lists.each { list -> println list }
[e, q]
[w, q]
===> [["e","q"],["w","q"]]
groovy:000> lists[0].each { entry -> println entry }
e
q
===> ["e","q"]
これは、GroovyShell よりもはるかに安全です。そうすれば、それを保護する方法や正規表現を使用して文字列を解析する方法について考える必要がありません。
Grailsには、で使用できる優れた型変換params
があります。
試しましたparams.list('lists')
か?
編集:
ここで試してみました。あなたの場合、リストで変換する式を評価できます。
params.lists = '[["e","q"],["t","w"]]'
def listValues = new GroovyShell().evaluate(params.lists)
listValues.each { list ->
println list
println list.class.canonicalName
}
EDIT2:ユーザーが予期しない別のコンテンツを送信した場合、これは危険な場合があります。この投稿で説明されているように、GroovyShellを保護できます。