1

通常我使用命令对象来处理提交的值。但是,如果通过 AJAX(使用 jQuery)提交同一属性的多个值,我将无法使用命令对象。

在我的 GUI 中,用户可以单击复选框来标记一些对象。假设复选框的名称是提供者,即

<input type=checkbox name=provider value=1>
<input type=checkbox name=provider value=2>
and so on...

当通过 AJAX 提交单击的值时,在 Grails 控制器中,这些值位于映射中:

params.'provider[]'

如果单击多个复选框,则键是提供者[],值是字符串数组,否则它只是一个字符串。

问题是,我无法使用名为 provider[] 的属性创建命令对象。我尝试的是:

class MyCommand {
    Long[] provider
    // or
    List<Long> provider
}

但这没有用。

所以,我的问题是,在这种情况下如何使用命令对象?我希望 Grails 做映射,我不想自己做映射。

我正在使用 Grails 2.3.11。

预先感谢,最好的问候,

丹尼尔

4

1 回答 1

0

要使用命令对象,请将复选框名称更改为 provider[index]

<input type="checkbox" name="provider[0]" value=1>
<input type="checkbox" name="provider[1]" value=2>
and so on...

并更改您的命令对象-

import org.apache.commons.collections.FactoryUtils
import org.apache.commons.collections.ListUtils

class MyCommand {
    List<Provider> provider = ListUtils.lazyList([], FactoryUtils.instantiateFactory(Provider))
}
于 2015-08-10T11:15:04.263 回答