GRAILS g: каждая проблема - PullRequest
2 голосов
/ 03 июля 2011

Я не могу заставить каждого работать. Я пытаюсь перебрать что-нибудь, но это никогда не работает = не генерирует HTML.

index.gsp

<g:each var="i" in="${userList}" controller="user">
          <li>Item ${i.name}</li>
</g:each>

userController.groovy

class UserController {
    ...        
        def userList = {

            User.list()

        }
        ...
}

Тогда у меня User.groovy, заполненный количеством пользователей ..

Что я должен написать в = "$ {.....}" для итерации, например, для пользователей, объявленных как User.groovy? Я пробовал: Пользователь, пользователи, User.list () ...

Спасибо

EDIT:

Допустим, у меня есть

def findOne {

 [users : User.findAllByNameLike("%Petr%")

}

в моем UserCotroller.

Как мне использовать g: каждый для него, потому что

<g:each var="user" in="${findOne}"> 

ничего не сделает ..

1 Ответ

6 голосов
/ 03 июля 2011

В вашем примере.userList - это Closure, так что это имя действия, поэтому я предполагаю, что вы получаете доступ к http://localhost:8080/appname/user/userList

Если вы возвращаете что-то из действия контроллера, которое будет отображаться в GSP, оно должно бытьв Map, «модель».Каждое значение на карте отображается в GSP с использованием ключа карты в качестве имени.Таким образом, действие контроллера, соответствующее вашему GSP, будет

def userList = {
    [users: User.list()]
}

, а затем вы можете выполнить итерацию с

<g:each var="user" in="${users}">
    <li>Item ${user.name}</li>
</g:each>

Имя не имеет значения - оно должно быть таким же вкарта модели как в ВСП.

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