GRAILS g:每个问题

时间:2011-07-03 18:52:06

标签: grails

我无法得到g:每个人都能工作。我试图迭代任何东西,但它永远不会工作=不生成任何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()......

由于

修改

假设我有一个

def findOne {

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

}

在我的UserCotroller中。

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

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

不会做任何事情......

1 个答案:

答案 0 :(得分:6)

在你的例子中。 userList是一个关闭,所以这是行动名称,所以我假设您正在访问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>

名称无关紧要 - 模型图中的名称必须与GSP中的名称相同。