Grails-如何将数据绑定到命令对象中的映射?

Grails-如何将数据绑定到命令对象中的映射?,grails,Grails,我有一个表,其中每行都有一个切换开关,用于暂停/恢复计划任务(我使用Quartz scheduler来完成此操作)。显示此表的屏幕每10秒刷新一次。当前发生的情况是,每次刷新时,按钮的选定切换没有被“记住” 因此,例如,如果我使用切换开关将暂停任务单击为“开”,当屏幕刷新时,切换开关被设置回“关”,因为切换选择没有被记住 我当前的实现有一个在切换选择更改时触发的函数。这需要三个参数-名称/组(用于石英功能)和值(用于获取选中值的表行中切换开关的id)。基本上,在这个函数中,我将id映射到切换开关

我有一个表,其中每行都有一个切换开关,用于暂停/恢复计划任务(我使用Quartz scheduler来完成此操作)。显示此表的屏幕每10秒刷新一次。当前发生的情况是,每次刷新时,按钮的选定切换没有被“记住”

因此,例如,如果我使用切换开关将暂停任务单击为“开”,当屏幕刷新时,切换开关被设置回“关”,因为切换选择没有被记住

我当前的实现有一个在切换选择更改时触发的函数。这需要三个参数-名称/组(用于石英功能)和值(用于获取选中值的表行中切换开关的id)。基本上,在这个函数中,我将id映射到切换开关的布尔检查值:

function pause(name, group, value)
{
    var checked = $('#pauseScheduledTask' + value).prop('checked');
    var map = {}
    map[value] = checked
    var data = {
        taskName: name,
        taskGroup: group,
        idToCheckedValue: map,
    };

    var url = '<g:createLink controller="scheduler" action="pauseScheduledTask"/>';
    ajaxUpdateAction(url, data, null, null, null, null);
}
我的控制器方法接受以下命令对象:

class PauseTaskCmd implements Validateable {

String taskName
String taskGroup
Map<String, Boolean> idToCheckedValue = new HashMap<>();

static constraints = {
    taskName nullable: false
    taskGroup nullable: false
 }

}
类PauseTaskCmd实现可验证的{ 字符串任务名 字符串任务组 Map idToCheckedValue=newhashmap(); 静态约束={ taskName可为空:false 任务组可为空:false } } 命令对象中的字符串值绑定正常,但在我的控制器中映射始终为空。绑定到地图是一种特殊情况吗?如何将函数中的映射绑定到命令对象中的映射?如果我可以在命令对象中获得映射,那么我应该能够在屏幕刷新时使用它们来显示值

请参见上的项目

如果您要发布这样的json结构,应该可以:

{"idToCheckedValue":{"first key":"first value", "second key":"second value"}}

可以显示正在发布的生成的JSON吗?
package demo

import grails.validation.Validateable

class PauseTaskCmd implements Validateable {

    String taskName
    String taskGroup
    Map<String, Boolean> idToCheckedValue = new HashMap<>();

    static constraints = {
        taskName nullable: false
        taskGroup nullable: false
    }
}
package johncommandobjectmap

import demo.PauseTaskCmd

class DemoController {

    def pauseScheduledTask(PauseTaskCmd cmd) {
        render "cmd.idToCheckedValue -> ${cmd.idToCheckedValue}"
    }
}
{"idToCheckedValue":{"first key":"first value", "second key":"second value"}}
$ curl -H "Content-Type: application/json" -X POST -d '{"idToCheckedValue":{"first key":"first value", "second key":"second value"}}' http://localhost:8080/demo/pauseScheduledTask

cmd.idToCheckedValue -> [first key:first value, second key:second value]