2012-03-01 9 views
3

paramマップに入れた値をチェックボックスから変更する方法はありますか?私は、チェックボックスがチェックされている場合、チェックボックスを持つ要素の値が "on"であるか、値が ""のパラメータマップの要素名の前にアンダースコアがあることに気付きましたチェックボックスがチェックされていない場合この動作を変更して、チェックされている場合は "true"の値がチェックされ、ボックスがチェックされていない場合は "false"(好ましくは要素の名前の前に '_'がない) ?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は真または偽と評価されますが、paramsマップには "プロパティ ":" on "または" _property ":チェックボックスがオンになっているかどうかによって異なります。 – Weezle

+0

実際には、チェックボックスをオンにすると、「プロパティ」:「on」と「_property」の両方がparamsマップにあります。チェックボックスをオフにすると、 "_property": ""のみがparamsマップにあります。 – Weezle

+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

関連する問題