-1

嘿伙计们,如果你能帮助我,我将不胜感激。首先请原谅我的英语,其次我会尽力描述这个问题。

据我所知,在 grails 中的 submitToRemote 之后,表单参数被序列化然后提交。现在的问题是:在两个 GSP 页面之间,我试图ArrayList<foo>来回发送一个。要将它保存在我正在使用的每个页面上<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.

如果它是一个更复杂的列表,例如一个域类的列表,那么您需要使用命令。

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 回答