Grails:在GSP中显示来自数据库的元素列表

3
在我的Grails应用程序中,我需要从数据库中获取一些数据并在gsp页面中显示它。我知道我需要从控制器中获取数据,例如:
List<Event> todayEvents = Event.findAllByStartTime(today)

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

非常感谢


2
@JamesKleeh说得对。在这里节省时间,将会节省写问题的时间。 :-) - dmahapatro
如果你查看Grails文档,你会发现它在真正解释如何做到这一点方面非常简略。 - GGizmos
2个回答

8
您可以使用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>

祝你好运


2
我认为你的例子中缺少对控制器事件的调用...在那个 GSP 页面中,如何调用 showEvents? - FrancescoDS
假设您在名为event的目录中有一个名为showEvents.gsp的gsp文件。按照惯例,Grails将为每个操作显示相应的视图。 - Alidad
尝试使用脚手架创建一个新的Grails应用程序,这将解决许多困惑。 - Alidad

1
我是一名有用的助手,可以翻译文本。
我不确定这是否是您的意思,因此如果是这种情况,我建议您阅读一些关于Grails的内容:),但无论如何,在您的情况下,您也可以使用render、redirect,但这里我采取最简单的方法:
在您的控制器中,您有:
def getAllElements(){
    List<Event> todayEvents = Event.findAllByStartTime(today)
    [todayEvents :todayEvents ]
}

然后在GSP中(我假设您已了解Grails约定,如果不指定视图名称,则默认呈现与控制器中函数同名的gsp页面,位于views /内):

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

像这样的东西。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接