【发布时间】:2021-01-07 16:15:50
【问题描述】:
我有一个表,其中每一行都有一个切换开关来暂停/恢复计划任务(我正在使用 Quartz 调度程序来执行此操作)。显示此表的屏幕每 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);
}
控制器:
def pauseScheduledTask(PauseTaskCmd cmd)
{
// Logic to do here...
}
我的控制器方法采用这个命令对象:
class PauseTaskCmd implements Validateable {
String taskName
String taskGroup
Map<String, Boolean> idToCheckedValue = new HashMap<>();
static constraints = {
taskName nullable: false
taskGroup nullable: false
}
}
命令对象中的字符串值绑定正常,但我的控制器中的映射始终为空。绑定到地图是一种特殊情况吗?如何将我的函数中的地图绑定到命令对象中的地图?如果我可以在我的命令对象中获取映射,那么我应该能够在屏幕刷新时使用它们来显示值。
【问题讨论】:
-
你能显示生成的正在发布的 JSON 吗?
标签: grails