从控制器获取复选框状态

时间:2014-09-03 13:01:49

标签: javascript grails checkbox controller

我的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始终为空......

1 个答案:

答案 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约定中的参数。你应该阅读

相关问题