2012-03-01 51 views
3

有没有一种方法可以改变从复选框放置在参数映射中的值?我注意到,如果选中复选框,或者在元素名称前面有一个下划线作为param映射中值为“”的键,那么带复选框的元素在param映射中的值将为“on”如果复选框没有被选中。有没有什么办法可以改变这种行为,以便如果检查到参数映射中的值为“true”,并且如果未检查框,则值为“假”(最好在元素名称前面没有“_”) ?Grails - 在复选框的参数映射中更改值?

回答

5

GSP表格

<g:form controller="test" action="testForm"> 
    <g:checkBox name="box" value="${true}" /> 
    <g:submitButton name="submit" value="submit" /> 
</g:form> 

控制器代码

def testForm() { 
    println params.box as boolean 
} 

true // when box checked 
false // when box unchecked 
+0

我目前使用的域实例的PROPERT输出y作为价值。 ''属性是一个布尔值(当然),因此domainInstance.property的计算结果为true或false,但params地图显示“属性“:”on“或”_property“:”“取决于复选框是否被选中。 – Weezle 2012-03-01 16:34:45

+0

其实,我刚刚注意到,当复选框被选中时,“属性”:“on”和“_property”:“”在params地图中。当复选框未选中时,只有“_property”:“”在params地图中。 – Weezle 2012-03-01 16:36:48

+1

看看[github上标记的源代码](https://github.com/grails/grails-core/blob/master/grails-plugin-gsp/src/main/groovy/org/codehaus/ groovy/grails/plugins/web/taglib/FormTagLib.groovy),你会看到是什么导致了你所看到的行为,也看到了标签可以做什么和不可以做什么。请记住,未经检查的复选框在HTML中以标准方式处理(即浏览器不提交值),因此标记的作者必须绕过该约束。 – proflux 2012-03-01 16:56:18