GRAILS g:每个问题

Pet*_*r D 2 grails

我不能得到g:每个都工作.我试图迭代任何东西,但它永远不会工作=不生成任何HTML.

index.gsp中

<g:each var="i" in="${userList}" controller="user">
          <li>Item ${i.name}</li>
</g:each>
Run Code Online (Sandbox Code Playgroud)

userController.groovy

class UserController {
    ...        
        def userList = {

            User.list()

        }
        ...
}
Run Code Online (Sandbox Code Playgroud)

然后我有User.groovy充满了用户数量..

我应该在="$ {.....}"中写什么来迭代例如声明为User.groovy的用户?我试过了:用户,用户,User.list()...

谢谢

编辑:

假设我有一个

def findOne {

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

}
Run Code Online (Sandbox Code Playgroud)

在我的UserCotroller中.

我如何使用g:each for it因为

<g:each var="user" in="${findOne}"> 
Run Code Online (Sandbox Code Playgroud)

什么都不做..

Bur*_*ith 6

在你的例子中.userList是一个Closure,所以它是动作名称,所以我假设您正在访问http:// localhost:8080/appname/user/userList

如果从要在GSP中呈现的控制器操作返回某些内容,则它必须位于Map"模型"中.地图中的每个值都使用地图键作为其名称在GSP中公开.因此,与您的GSP相对应的控制器操作将是

def userList = {
    [users: User.list()]
}
Run Code Online (Sandbox Code Playgroud)

然后你可以迭代

<g:each var="user" in="${users}">
    <li>Item ${user.name}</li>
</g:each>
Run Code Online (Sandbox Code Playgroud)

名称无关紧要 - 它只需在模型图中与GSP中相同.