Grails显示数据库中的数据

时间:2018-03-06 08:43:34

标签: grails gorm gsp

我正在按照本教程创建一个Grails应用程序:http://grails.asia/grails-tutorial-for-beginners-display-data-from-the-database

当我尝试显示数据库中的数据时,没有任何反应。以下是我的控制器代码:

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

def displayUsers(){
        if(User.count()==0){
            render 'User list is empty!';
        }else {
            render(view: 'userlist.gsp');
            //a little test
            println User.list().size();
            println User.count();
            for(User u : User.list()){
                println u.username;
            }
        }
    }

User.count()正在运行,因为我可以看到控制台中的用户名和userlist.gsp每次渲染,但似乎我的视图代码没有看到列表。这是userlist.gsp代码:

<body>
    userlist.gsp
    <g:each in="${users}" var="user" status="i">
            <h3>${i+1}. ${user.username}</h3>
    </g:each>
</body>

这段代码有什么问题?我在类比应用程序中一直在制作与上面教程完全相同的步骤,但它似乎不起作用。这特别奇怪,因为我在此链接下发现了类似的问题:grails: show list of elements from database in gsp 它被标记为已接受的答案。为什么exacly以同样的方式在我的应用程序中不起作用?

2 个答案:

答案 0 :(得分:0)

按如下方式渲染gsp视图(将数据作为模型传递)。

render(view: "userlist", model: [userList : User.list()])

现在在gsp中获取模型数据如下。

<body>
    userlist.gsp
    <g:each in="${userList}" var="user" status="i">
            <h3>${i+1}. ${user.username}</h3>
    </g:each>
</body>

答案 1 :(得分:0)

您可以选择许多选项:

  1. 将控制器中的gsp操作从def index()重命名为def userlist()
  2. 或将index.gsp文件重命名为userlist.gsp

    1. 您可以使用userlist.gsp对象
    2. 重定向到${users}

      更改控制器def index()操作  [users:users]redirect(action: "userlist", params: ["users": users])

      注意:第二种方法将在url中显示参数。 Refer Grails Doc

      1. 您可以使用chain 例如chain(action: "userlist", model: ["users": users])
      2. Refer Grails Doc

        every gsp action (page) needs to be injected