【问题标题】:Grails - Set "disabled" attribute name and value in GSPGrails - 在 GSP 中设置“禁用”属性名称和值
【发布时间】:2011-08-29 01:03:58
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

  • 请编辑您的问题陈述以明确说明您的意图。您对 gotomanners 答案的评论似乎与您的问题相冲突。

标签: grails taglib gsp html setattribute


【解决方案1】:

您的 ${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”。

【讨论】:

  • 感谢您的回复。我并不真正关心禁用变量及其内容。我只需要写一个属性,即: 其中 ${disabled} 包含一个字符串:'title="Input title"'
【解决方案2】:

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

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

【讨论】:

  • 但它是有效的 html - 这是我们大多数人现在正在创造的(如果多年后你现在遇到这个答案)
猜你喜欢
  • 1970-01-01
  • 2012-03-13
  • 2014-02-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-03
  • 2012-05-01
相关资源
最近更新 更多