我正在尝试这样做但没有成功:
<g:textField title="${title}" ${disabled} />
我想应用禁用属性,仅当 ${disabled} 变量为 TRUE 时。我不想使用条件,因为在其他视图中我有很多代码并且使用 IF 语句会很混乱。
另一件事是应用这样的属性:
<g:textField title="${title}" disabled="${disabled}" />
但是,当我放置disabled属性时,没有考虑变量的内容,它总是禁用该字段。
我正在尝试这样做但没有成功:
<g:textField title="${title}" ${disabled} />
我想应用禁用属性,仅当 ${disabled} 变量为 TRUE 时。我不想使用条件,因为在其他视图中我有很多代码并且使用 IF 语句会很混乱。
另一件事是应用这样的属性:
<g:textField title="${title}" disabled="${disabled}" />
但是,当我放置disabled属性时,没有考虑变量的内容,它总是禁用该字段。
如果您不喜欢 gotomanners 的解决方案(这对我来说似乎完全有效)
<g:textField title="${title}" ${(disabled)?"disabled":""} />
您的${disabled}变量应该返回“已禁用”而不是 TRUE 才能正常工作。
我尝试了这一点,发现无论值如何,它总是被禁用的问题。显然,disabled 关键字的存在会禁用该字段,并且分配给该关键字的值只是一个虚拟值。
无论如何,这是一个修复。
像这样定义您自己的文本字段标签...
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”作为字符串返回。