-1

やあみんな私を助けていただければ幸いです。まず第一に私の英語を許し、第二に私は問題を説明するために最善を尽くします。

私が知る限り、グレイルのsubmitToRemoteの後で、フォームパラメータがシリアル化されてから送信されます。ArrayList<foo>ここで問題が発生します。2つのGSPページ間で、前後に送信しようとしています。使用している各ページに保存するに<g:hiddenField>は、パラメータを使用してコントローラーで使用します。フォームが送信されると、文字列型であるため、コントローラーはarrayListを使用できなくなります。また、Cookieやセッションを使用せずにこれを行う必要があります。

送信後にarrayListを逆シリアル化するために変換する方法に関するアイデア。

4

1 に答える 1

1

それが単純であると仮定すると、のメソッドをArrayList<Integer>使用できます。list()params

def myList = params.list('myList') //myList is the name in the view.

1つのドメインクラスのリストなど、より複雑なリストの場合は、コマンドを使用する必要があります。

Class A {
  String name
}

Class ACommand {
  List<A> listA = ListUtils.lazyList( [], FactoryUtils.instantiateFactory(A) )
}

意見

<g:hiddenField name="listA[0].name" value="Fisrt Name" />
<g:hiddenField name="listA[1].name" value="Second Name" />

コマンドのバインド

class MyController {
  def someAction() {
    //in this example assume that this action is called in the submit of the form
    ACommand command = new ACommand()
    bindData(command, params) //this will populate the command with your list
  }
}
于 2013-03-21T19:10:32.687 に答える