перебрать модель контроллера Grails - PullRequest
3 голосов
/ 29 марта 2011

Скажем, у меня есть действие контроллера, подобное следующему:

def someAction = {

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

В someAction.gsp Я не знаю, какие клавиши модели.Есть ли способ, которым я могу перебирать ключи и значения модели, не зная имен ключей?

Ответы [ 2 ]

6 голосов
/ 29 марта 2011

Все атрибуты модели доступны в объекте 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 голос
/ 10 января 2014

Использование pageScope :

<ul>
    <g:each var="item" in="${pageScope.variables}">
        <li>${item.key} = ${item.value}</li>
    </g:each>
</ul>

Но учтите, что вы не сможете отличить значения модели контроллера от значений в платформе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...