迭代Grails控制器模型

时间:2011-03-29 17:00:00

标签: grails groovy

假设我有以下控制器操作:

def someAction = {

    if (someCondition) {
        [foo: 1, bar: 2] 
    } else {
        [foo2: 4, bar2: 6, baz2: 6]
    }
}

someAction.gsp我不知道模型的键是什么。有没有办法可以在不知道密钥名称的情况下迭代模型的键和值?

2 个答案:

答案 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>

但请注意,您将无法区分控制器模型值和框架中的控制器模型值。