我创建了一个 taglib 来缩短输入字段代码。它预设了“名称”、“值”等。现在我需要获取一个 bean 值,但保存该值的字段是动态的。
查看一些代码(缩短以更好地解决我的问题):
普惠制:
<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/插值变体进行实验,但没有任何效果。
当然我可以添加另一个参数来传递值,但我觉得它不应该是必需的,因为我已经拥有了在 taglib 中获取它所需的一切......
你能给我一些指示吗?
谢谢