簡體   English   中英

Grails的 <g:if> 在 <g:select>

[英]Grails <g:if> in <g:select>

我在.gsp文件中有這個<g:select> 但是,與任何普通的<g:select>不同,如果滿足某個條件,則該屬性將具有disabled=""

遵循以下代碼:

<g:select name="test" 
          from="${["foo1","foo2"]}" 
          <g:if test="${true}">disabled=""</g:if> />

它返回了一個錯誤: Grails tag [g:select] was not closed

但是當我把它改成這個:

<g:select name="test" 
          from="${["mu1","mu2","mu3"]}" 
          ${ if(true) { println "disabled=\"\"" } }/>

它返回了此錯誤: Attribute value must be quoted.

這兩個錯誤消息都在異常下, org.codehaus.groovy.grails.web.taglib.exceptions.GrailsTagException

問題是我們如何才能使這項工作成功? 沒有使用自定義TagLib,是否有可能的答案?

GSP表單字段標記將disabled視為布爾屬性,因此您可以這么說

<g:select .... disabled="${true}" />

一般來說,你應該能夠使用按照通常的Groovy的真相規則的表達,但我相信,這使該字符串的特殊情況“真”與“假”(后者通常被認為是true在Groovy的真相規則作為非-empty string)。 如果有疑問你可以隨時說

disabled="${(someExpression) as boolean}"

無需使用println,試試這個

<g:select .... ${(conditional)?"disabled":""} ... />
    <g:select disabled="${true}"...

沒問題,但是當你提交並且它是必填字段時,該值將不會被提交,因此在按下提交按鈕時使用此jQuery代碼啟用該字段

    $(function() {

        $('form').on('submit', function() {
            $(this).find(':disabled').removeAttr('disabled');
        });

    });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM