我的Grails项目我有一个复选框。我想在复选框的remoteFunction
方法中调用onCheck()
,如下所示:
if(checkbox.isChecked)
{
//do something
}
else
{
//do some other thing
}
事实是,在检查/取消选中后,我不知道如何在控制器中获取复选框的状态。是否需要使用一些JavaScript代码? 有什么建议吗?
编辑: 这是复选框
<g:checkBox name="hasStampDuty" value="${receiptInstance?.hasStampDuty}"
onclick="${remoteFunction(
controller: 'Receipt',
action: 'addStampDuty',
params: '\'id=\' + this.id+\'ischecked=\'+this.checked',
onSuccess: 'updateTotalAmount(\'totalAmount\', data, \'00000\')')}"
/>
其中addStampDuty如下:
def addStampDuty(Long id, boolean ischecked)
{
//add stamp duty value
def receiptInstance = Receipt.get(id)
if(ischecked != null)
{
if(ischecked) {
//do something
}
else {
//do some other
}
}
}
但id
始终为空......
答案 0 :(得分:0)
在正常情况下,复选框的状态将传递给参数中的操作。如上面的评论中所述,是否存在具有&#34; $ {fieldName} .selected&#34;形式的参数。指示是否选中(选中)复选框。我同意这有点尴尬。但是,如果你直接搞砸参数,那么你可能搞砸了那个合同。
您可以在操作开始时添加以下代码,以确切了解它在params中传递的内容:
log.info("Executing \"blah\" action.")
params.each { log.info("Param ${it.key} = {$it.value}") }
作为旁注,如果要对所有操作执行此操作,请创建过滤器(请参阅Grails过滤器)并根据需要进行交叉切割。
最后,我相信Grails AJAX包装器标签已被弃用,您应该避免使用它们。只需使用jquery(或任何你想要的)AJAX客户端支持发布表单,并让表单字段填充普通Grails约定中的参数。你应该阅读