Grails:我想在动态构建下拉列表时计算列表的名称

Grails:我想在动态构建下拉列表时计算列表的名称,grails,eval,Grails,Eval,我有一个通用的下拉对象,它保存给定集合的名称。当它被加载时,我希望这个名称被“评估”并加载正确的集合 例如: DropDownObject: class DDObject{ String collectionName } 在控制器中: def collection1 = ["1","2","3","4"] ... DDObject dd = new DDObject() dd.collectionName = "collection1" ... [collection1:collectio

我有一个通用的下拉对象,它保存给定集合的名称。当它被加载时,我希望这个名称被“评估”并加载正确的集合

例如:

DropDownObject:

class DDObject{
  String collectionName
}
在控制器中:

def collection1 = ["1","2","3","4"]
...
DDObject dd = new DDObject()
dd.collectionName = "collection1"
...
[collection1:collection1,dropDown:dd]
(不同的下拉列表在整个控制器上共享不同的集合,因此我不想专门将集合添加到DD对象)

在普惠制中——类似于:

<g:select name="foo" from="${Eval.me(dropDown.collectionName)}" />

(换句话说-计算集合的名称,并从从控制器传递到gsp的映射中获取特定集合)

我知道还有其他方法可以做到这一点,但在这种情况下,这种“评估”可能吗


谢谢

Groovy中的计算可以使用
GroovyShell
完成,请查看我的示例。但我建议您在使用用户输入时不要使用它

更简单的方法是使用当前请求获取变量。签入示例

所以这可能是有效的:

<g:select name="foo" from="${request.getAttribute(dropDown.collectionName)}" />

我明白了-因此从控制器传递的映射相当于将属性放入请求范围。或者,更简单地说,映射是请求范围属性。正是我要找的!