2012-03-01 21 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