【问题标题】:Grails display data from databaseGrails 显示数据库中的数据
【发布时间】:2018-08-14 01:26:21
【问题描述】:

我正在按照本教程创建一个 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 它已被标记为已接受的答案。为什么完全相同的方式在我的应用中不起作用?

【问题讨论】:

    标签: grails grails-orm gsp


    【解决方案1】:

    你可以做很多选择:

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

    或将index.gsp文件重命名为userlist.gsp

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

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

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

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

    Refer Grails Doc

    every gsp action (page) needs to be injected

    【讨论】:

    • 不确定我是否理解您的建议。我做过这样的事情:def userlist(){ def users = User.list(); redirect(action: "displayUsers", params: ["users": users]); } 视图:&lt;g:each in="${users}" var="user" status="i"&gt; &lt;h3&gt;${i+1}. ${user.username}&lt;/h3&gt; &lt;/g:each&gt; 它似乎对我不起作用
    【解决方案2】:

    如下渲染 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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-29
      • 2021-06-23
      • 1970-01-01
      • 2019-04-08
      • 1970-01-01
      • 2023-04-10
      • 2016-12-19
      • 2017-04-18
      相关资源
      最近更新 更多