2012-09-20 29 views
1

我在.gsp文件中有这<g:select>。但是,与任何普通的<g:select>不同的是,如果满足某个条件,则该属性将具有disabled=""的属性。Grails <g:if> in <g:select>

下面的代码:

<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.

这两个错误消息都在exc之下eption,org.codehaus.groovy.grails.web.taglib.exceptions.GrailsTagException

问题是我们该如何做这项工作?没有使用自定义TagLib有没有可能的答案?

回答

2

普惠制表单字段标签治疗disabled作为一个布尔值属性,因此可以说

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

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

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

无需使用println的,试试这个

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

是好的,但是当你提交,这是一个必填字段的值将不会被提交,以便按提交按钮

时使用此jQuery代码,以使该领域
$(function() { 

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

    });