在grails中获取动态bean字段

在grails中获取动态bean字段,grails,groovy,Grails,Groovy,我创建了一个标记库来缩短输入字段代码。它预设了“名称”、“值”等。现在我需要获取一个bean值,但是保存该值的字段是动态的。 请参阅一些代码(缩短以更好地解决我的问题): 普惠制: 我尝试使用各种GString/插值变体进行实验,但没有任何效果。 当然,我可以添加另一个参数来传递值,但我觉得它不应该是必需的,因为我已经在taglib中拥有了获取它所需的一切 你能给我指路吗? 谢谢如果bean是一个对象实例,而字段是一个表示该对象成员的字符串,您可以尝试以下操作: def val = bean."

我创建了一个标记库来缩短输入字段代码。它预设了“名称”、“值”等。现在我需要获取一个bean值,但是保存该值的字段是动态的。
请参阅一些代码(缩短以更好地解决我的问题):

普惠制:

我尝试使用各种GString/插值变体进行实验,但没有任何效果。
当然,我可以添加另一个参数来传递值,但我觉得它不应该是必需的,因为我已经在taglib中拥有了获取它所需的一切

你能给我指路吗?

谢谢

如果
bean
是一个对象实例,而
字段
是一个表示该对象成员的字符串,您可以尝试以下操作:

def val = bean."$field"

在groovy中,可以使用gstring动态引用对象的成员。例如:

def val = bean."${field}"
您甚至可以在GString中执行一些逻辑。假设您有一个默认字段,并且仅当“field”变量不为null时,才希望在该变量中使用该名称:

def val = bean."${field ? field : "default"}

昨天一定迟到了,这并不难;-)
def val = bean."$field"
def val = bean."${field}"
def val = bean."${field ? field : "default"}