假设我有以下控制器操作:
def someAction = {
if (someCondition) {
[foo: 1, bar: 2]
} else {
[foo2: 4, bar2: 6, baz2: 6]
}
}
在someAction.gsp
我不知道模型的键是什么。有没有办法可以在不知道密钥名称的情况下迭代模型的键和值?
答案 0 :(得分:6)
request
对象中提供了所有模型属性。你可以像这样迭代这个对象:
<g:each var="item" in="${request}">
${item.key} = ${item.value}<br/>
</g:each>
请注意,request
对象将包含所有请求属性,以及您可能不感兴趣的大量信息。
实现目标的另一种方法是将所有模型属性放在一个地图中,如下所示:
if (someCondition) {
[result:[foo: 1, bar: 2]]
} else {
[result:[foo2: 4, bar2: 6, baz2: 6]]
}
这样您就可以将属性与其他请求属性隔离开来。在这种情况下,您必须使用result
地图迭代模型键:
<g:each var="item" in="${result}">
答案 1 :(得分:1)
使用pageScope:
<ul>
<g:each var="item" in="${pageScope.variables}">
<li>${item.key} = ${item.value}</li>
</g:each>
</ul>
但请注意,您将无法区分控制器模型值和框架中的控制器模型值。