入力フィールドのコードを短縮するために、taglib を作成しました。「名前」、「値」などを事前に設定します。ここで Bean 値を取得する必要がありますが、その値を保持するフィールドは動的です。
いくつかのコードを参照してください(問題を解決するために短縮されています):
gsp:
<g:validatedInputField bean="${command}" field="surname" />
<g:validatedInputField bean="${command}" field="name" />
タグライブラリ
def validatedInputField = { attrs, body ->
def field = attrs.field
def bean = attrs.bean
if (field && bean) {
def val = bean.field
out << "<input type=\"text\" name=\"$field\" bean=\"$bean\" value=\"$val\">"
}
}
したがって、問題は次の行です。Bean にフィールド「フィールド」がないため、明らかに機能しません。「名前」または「姓」、またはパラメーター「フィールド」の値が何であれ、動的に置き換えられるようにします。
def val = bean.field
さまざまな GString/interpolation のバリエーションを試してみましたが、何も機能しませんでした。
もちろん、値を渡すために別のパラメーターを追加することもできますが、taglib で取得するために必要なものはすべて既にあるので、必要ではないと思います...
道順を教えてください。
ありがとう