5

我正在尝试这样做但没有成功:

<g:textField title="${title}" ${disabled} />

我想应用禁用属性,仅当 ${disabled} 变量为 TRUE 时。我不想使用条件,因为在其他视图中我有很多代码并且使用 IF 语句会很混乱。

另一件事是应用这样的属性:

<g:textField title="${title}" disabled="${disabled}" />

但是,当我放置disabled属性时,没有考虑变量的内容,它总是禁用该字段。

4

2 回答 2

8

如果您不喜欢 gotomanners 的解决方案(这对我来说似乎完全有效)

<g:textField title="${title}" ${(disabled)?"disabled":""} />
于 2011-05-19T21:01:25.030 回答
7

您的${disabled}变量应该返回“已禁用”而不是 TRUE 才能正常工作。

编辑

我尝试了这一点,发现无论值如何,它总是被禁用的问题。显然,disabled 关键字的存在会禁用该字段,并且分配给该关键字的值只是一个虚拟值。

无论如何,这是一个修复。

  • 创建一个 Taglib 类(如果您还没有)
  • 像这样定义您自己的文本字段标签...

    def myTextField = { attrs, body ->
      def title = attrs.remove("title")
      def isDisabled = attrs.remove("disabled")
    
      if ("true".equals(isDisabled)) {
        out << """<input title="${title}" disabled="${isDisabled}" """
        attrs.each { k,v ->
            out << k << "=\"" << v << "\" "
          }
        out << "/>"
      } else {
        out << """<input title="${title}" """
        attrs.each { k,v ->
            out << k << "=\"" << v << "\" "
          }
        out << "/>" 
      }
    }
    
  • 在您的 gsp 中,像这样调用您的文本字段标签

    <g:myTextField title="${title}" disabled="${disabled}" />
    
  • 像这样添加额外的属性也是有效的

    <g:myTextField class="title" name="theName" value="theValue" title="${title}" disabled="${disabled}" />
    
  • 确保您的${disabled}变量这次将“true”或“false”作为字符串返回。

于 2011-05-19T16:57:05.937 回答