我无法得到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}">
不会做任何事情......
答案 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中的名称相同。