这可能是一个非常容易的问题,但我仍然一直在努力。在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 ->
.
.
.
}
你如何绑定到控制器中的命令对象? – Kelly 2012-07-18 21:36:25
@Kelly看我的编辑。 – aasukisuki 2012-07-18 22:28:51
你是对的 - 这应该是,而且通常很简单。我刚刚在Grails 2.0.4上验证了这两种方法,并在1.3.7上验证了第二种方法。当我'println cmd.active'完全按照你自己的方式打印'true'或'false'。你有没有尝试'grails干净' - 不知道还有什么要尝试。只要您的实际表单具有正确的控制器和操作,并且上面的演示表单没有显示任何错字,您所做的每件事都看起来很好。 – Kelly 2012-07-18 22:53:52