2012-07-18 39 views
0

这可能是一个非常容易的问题,但我仍然一直在努力。在grails中使用带有输入的命令对象布尔值:复选框

我有一个表格:

. 
. 
. 
<g:form controller='somecontroller' action='someaction'> 
    <g:textField name='name'/> 
    <g:checkBox name='active'/> 
    <g:submitButton name='save'/> 
</g:form> 
. 
. 
. 

而且我有一个命令对象:

class MyCommandObject{ 

    String name 
    Boolean active 

    static constraints{ 
     . 
     . 
     . 
    } 
} 

当我尝试访问我的控制器的命令对象的活动特性,它总是假的。但是,名称属性正在适当填充。我尝试将值更改为true,并且$ {true}(正如我在某些示例中看到的)并且没有任何工作。我在这里做错了什么?

编辑:我如何绑定到命令对象控制器:

class MyController{ 

    . 
    . 
    . 

    def save(MyCommandObject cmd){ 

     // Do validation/error checking 

     def myDomainObject = new DomainObject() 

     myDomainObject.name = cmd.name 
     myDomainObject.active = cmd.active 

     // Do something with myDomainObject 

    } 

} 

我也试过的风格:你做

def save = { MyCommandObject cmd -> 

    . 
    . 
    . 
} 
+0

你如何绑定到控制器中的命令对象? – Kelly 2012-07-18 21:36:25

+0

@Kelly看我的编辑。 – aasukisuki 2012-07-18 22:28:51

+0

你是对的 - 这应该是,而且通常很简单。我刚刚在Grails 2.0.4上验证了这两种方法,并在1.3.7上验证了第二种方法。当我'println cmd.active'完全按照你自己的方式打印'true'或'false'。你有没有尝试'grails干净' - 不知道还有什么要尝试。只要您的实际表单具有正确的控制器和操作,并且上面的演示表单没有显示任何错字,您所做的每件事都看起来很好。 – Kelly 2012-07-18 22:53:52

回答

1

一切看起来都很好,我已经验证在1.3.7和2.0.4中工作。

请做一个grails clean然后重试。

+0

再次感谢您的帮助! – aasukisuki 2012-07-20 01:23:47

+2

我在Grails 2.1.1中遇到了同样的情况。将参数绑定到命令对象中的布尔成员总是会导致该成员为空。在grails清理完毕(并且在GGTS中清理项目)之后,一切都很顺利。也许太阳黑子太多了? – apa64 2012-11-01 18:41:55

+0

即使在2.2.0中,命令对象似乎仍然有点不完整。也许是3/4烘焙;) – 2014-10-13 22:01:47