Grails <g:if> in <g:select> </g:select> </g:if>

时间:2012-09-20 07:30:47

标签: grails select gsp

我在<g:select>文件中有.gsp。但是,与任何普通的<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,是否有可能的答案?

2 个答案:

答案 0 :(得分:2)

GSP表单字段标记将disabled视为布尔属性,因此您可以说

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

一般来说,你应该能够在通常的Groovy-truth规则下使用任何表达式,但我相信它为字符串“true”和“false”提供了一个特例(后者通常被视为true下的Groovy-truth规则为非空字符串)。如果有疑问,你可以随时说

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

答案 1 :(得分:1)

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

很好,但是当你提交并且它是必填字段时,该值将不会被提交,因此在按下提交按钮时使用此jQuery代码启用该字段

    $(function() {

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

    });