如何使用Grails将数组的值映射到命令对象?

如何使用Grails将数组的值映射到命令对象?,grails,mapping,command-objects,Grails,Mapping,Command Objects,通常我使用命令对象处理提交的值。但是,如果通过AJAX(使用jQuery)提交同一属性的多个值,我将无法使用命令对象 在我的GUI中,用户可以单击复选框来标记一些对象。假设复选框的名称是provider,即 <input type=checkbox name=provider value=1> <input type=checkbox name=provider value=2> and so on... 其中,键是provider[],如果单击多个复选框,则值是字符串

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

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

<input type=checkbox name=provider value=1>
<input type=checkbox name=provider value=2>
and so on...
其中,键是provider[],如果单击多个复选框,则值是字符串数组,否则它只是一个字符串

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

class MyCommand {
    Long[] provider
    // or
    List<Long> provider
}
类MyCommand{
长[]提供程序
//或
列表提供程序
}
但那没用

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

我正在使用Grails2.3.11

提前感谢,, 致以最良好的祝愿


Daniel

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

<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
导入org.apache.commons.collections.ListUtils
类MyCommand{
列表提供程序=ListUtils.lazyList([],FactoryUtils.InstanceFactory(提供程序))
}

要使用命令对象,请将复选框名称更改为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
导入org.apache.commons.collections.ListUtils
类MyCommand{
列表提供程序=ListUtils.lazyList([],FactoryUtils.InstanceFactory(提供程序))
}

这不起作用,因为我正在用jQuery提交这些值,并且属性的名称是fix:jQuery.ajax({url:…,data:{provider:collectedValues});好啊您还可以使用jQuery的
序列化
方法发送参数,在这种情况下,您可以使用上述方法。将输入(复选框)放在一个div中,并为该div指定一个类或id,例如class
textAjaxClass
。然后在ajax中发送参数,如--
数据:$('.textAjaxClass:input').serialize(),
谢谢,您是对的。这将解决问题。问题是jQuery AJAX调用是jQuery.AJAX{…data:{provider:providerArray}},这将导致服务器端名为provider[]的属性。问题是,我不能更改Javascript代码,因为这是我必须使用的遗留系统。这不起作用,因为我正在用jQuery提交这些值,并且属性的名称是fix:jQuery.ajax({url:…,data:{provider:collectedValues});好啊您还可以使用jQuery的
序列化
方法发送参数,在这种情况下,您可以使用上述方法。将输入(复选框)放在一个div中,并为该div指定一个类或id,例如class
textAjaxClass
。然后在ajax中发送参数,如--
数据:$('.textAjaxClass:input').serialize(),
谢谢,您是对的。这将解决问题。问题是jQuery AJAX调用是jQuery.AJAX{…data:{provider:providerArray}},这将导致服务器端名为provider[]的属性。问题是我不能更改Javascript代码,因为这是我必须使用的遗留系统。
import org.apache.commons.collections.FactoryUtils
import org.apache.commons.collections.ListUtils

class MyCommand {
    List<Provider> provider = ListUtils.lazyList([], FactoryUtils.instantiateFactory(Provider))
}