1

次のようなビューから渡されたリストのリストがあります。

[lists:[["e","q"],["t","w"]], action:save, controller:newReport]

私のコントローラーで

def lists = params.lists;

リストは、値が "[["e","q"],["t","w"]]" の文字列になります

リストを反復して各サブリストを取得するにはどうすればよいですか?

4

2 に答える 2

3

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 よりもはるかに安全です。そうすれば、それを保護する方法や正規表現を使用して文字列を解析する方法について考える必要がありません。

于 2012-11-22T09:33:59.557 に答える
0

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を保護できます。

于 2012-11-21T11:25:48.110 に答える