【问题标题】:grails: show list of elements from database in gspgrails:在 gsp 中显示数据库中的元素列表
【发布时间】:2013-06-29 21:37:48
【问题描述】:

在我的 grails 应用程序中,我需要从数据库中获取一些数据并将其显示在 gsp 页面中。 我知道我需要从控制器获取数据,例如

List<Event> todayEvents = Event.findAllByStartTime(today)

获取日期为今天的所有事件 现在,如何在 gsp 页面中呈现它?如何将 Event 对象列表传递给 gsp?

非常感谢

【问题讨论】:

  • 说得对@JamesKleeh。空闲时间here 将节省写问题的时间。 :-)
  • 如果您查看 Grails 文档,您会发现它在真正解释如何执行此操作方面非常简陋。

标签: database list grails gsp


【解决方案1】:

我不确定这是否真的是您的意思,因为在这种情况下,我建议您阅读有关 grails 的更多内容:),但无论如何,对于您的情况,您也可以使用渲染、重定向,但我在这里采取最简单的方法:

在你的控制器中你有:

def getAllElements(){
    List<Event> todayEvents = Event.findAllByStartTime(today)
    [todayEvents :todayEvents ]
}

然后在 GSP 中(我假设您了解 grails 约定,就好像您不指定视图名称一样,默认情况下,它会在视图 / 内部呈现与控制器中的函数同名的 gsp 页面):

<g:each in="${todayEvents}" var="eventInstance">
    ${eventInstance.<propertyName>}
</g:each>

类似的东西。

【讨论】:

    【解决方案2】:

    您可以使用 Grails 脚手架学习许多基本概念。使用域创建一个新项目并发出命令generate-all com.sample.MyDomain,它将为您生成一个控制器和一个视图。

    要回答您的问题,请在控制器中创建一个操作,如下所示:

    class EventController {
    
        //Helpful when controller actions are exposed as REST service.     
        static allowedMethods = [save: "POST", update: "POST", delete: "POST"]
    
        def showEvents() {
            List<Event> todayEvents = Event.findAllByStartTime(today)
            [eventsList:todayEvents] 
        } 
    }
    

    在您的 GSP 上,您可以循环浏览列表并根据需要打印它们

    <g:each in="${eventsList}" var="p">
     <li>${p}</li>
    </g:each>
    

    祝你好运

    【讨论】:

    • 我认为您的示例中缺少对控制器事件的​​调用...如何在该 gsp 中调用 showEvents?
    • 这是假设您在名为 event 的目录中有一个名为 showEvents.gsp 的 gsp。按照惯例,Grails 将显示每个操作的对应视图。
    • 尝试一个新的带有脚手架的 grails 应用程序,这将消除许多困惑。
    猜你喜欢
    • 2017-11-02
    • 1970-01-01
    • 1970-01-01
    • 2011-05-13
    • 1970-01-01
    • 2011-05-28
    • 1970-01-01
    • 2018-08-14
    • 1970-01-01
    相关资源
    最近更新 更多