これは可能ではないようです。 FormTagLib.groovy
クラスのソースコードには、idが指定されていない場合は、id
の属性を名前と同じにするかどうかを決定するフラグがあることが示されています。残念ながらはとなり、外部からの設定はできません。次のコードを参照してください:
まず、我々は法fieldImpl
(full source available on Github)fieldImpl
def textField = { attrs ->
attrs.type = "text"
attrs.tagName = "textField"
fieldImpl(out, attrs)
}
呼び出すoutputAttributes
を呼び出しg:textField
のソースを持っています。
void outputAttributes(attrs, writer, boolean useNameAsIdIfIdDoesNotExist = false) {
attrs.remove('tagName') // Just in case one is left
attrs.each { k, v ->
...
}
if(useNameAsIdIfIdDoesNotExist) {
outputNameAsIdIfIdDoesNotExist(attrs, writer)
}
}
この方法は、実際のIDを生成するoutputNameAsIdIfIdDoesNotExist...
を呼び出し:true
def fieldImpl(out, attrs) {
resolveAttributes(attrs)
out << "<input type=\"${attrs.remove('type')}\" "
outputAttributes(attrs, out, true)
out << "/>"
}
outputAttributesこの(略称)のように見えるである第三のパラメータに注意してください。 outputAttribues
は常にtrue
を受け取るので、何もそれを上書きすることはできません。
これは私が見たかった答えではありませんが、私の質問に答えると役に立ちます。ありがとうございました。 –