1

<g:select>在一个.gsp文件中有这个。但与任何普通的 's 不同,如果满足某个条件,<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 是否有可能的答案?

4

3 回答 3

2

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

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

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

disabled="${(someExpression) as boolean}"
于 2012-09-20T08:19:30.320 回答
1

不需要使用println,试试这个

<g:select .... ${(conditional)?"disabled":""} ... />
于 2012-09-20T07:58:37.943 回答
1
    <g:select disabled="${true}"...

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

    $(function() {

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

    });
于 2013-01-25T07:40:12.933 回答