【问题标题】:Grails creating list in IndexGrails 在索引中创建列表
【发布时间】:2015-06-18 12:12:03
【问题描述】:

在我的索引页面上,我想显示另一个类的所有实例。考虑到它们以相同的方式在 gsp 中为您显示所有控制器,这应该不难。

<!DOCTYPE html>
    <html>
    <head>
        <meta name="layout" content="main"/>
        <title>College Now Portal</title>
        <style type="text/css" media="screen">
            #status {
            background-color: #eee;
            border: .2em solid #fff;
            margin: 2em 2em 1em;
            padding: 1em;
            width: 12em;
            float: left;
            -moz-box-shadow: 0px 0px 1.25em #ccc;
            -webkit-box-shadow: 0px 0px 1.25em #ccc;
            box-shadow: 0px 0px 1.25em #ccc;
            -moz-border-radius: 0.6em;
            -webkit-border-radius: 0.6em;
            border-radius: 0.6em;
        }

        .ie6 #status {
            display: inline; /* float double margin fix http://www.positioniseverything.net/explorer/doubled-margin.html */
        }

        #status ul {
            font-size: 0.9em;
            list-style-type: none;
            margin-bottom: 0.6em;
            padding: 0;
        }

        #status li {
            line-height: 1.3;
        }

        #status h1 {
            text-transform: uppercase;
            font-size: 1.1em;
            margin: 0 0 0.3em;
        }

        #page-body {
            margin: 2em 1em 1.25em 18em;
        }

        h2 {
            margin-top: 1em;
            margin-bottom: 0.3em;
            font-size: 1em;
        }

        p {
            line-height: 1.5;
            margin: 0.25em 0;
        }

        #controller-list ul {
            list-style-position: inside;
        }

        #controller-list li {
            line-height: 1.3;
            list-style-position: inside;
            margin: 0.25em 0;
        }

        @media screen and (max-width: 480px) {
            #status {
                display: none;
            }

            #page-body {
                margin: 0 1em 1em;
            }

            #page-body h1 {
                margin-top: 0;
            }
        }
    </style>
</head>
<body>
<sec:ifAllGranted roles="ROLE_ADMIN">
    <a href="#page-body" class="skip"><g:message code="default.link.skip.label" default="Skip to content&hellip;"/></a>
    <div id="status" role="complementary">
        <h1>Application Status</h1>
        <ul>
            <li>App version: <g:meta name="app.version"/></li>
            <li>Grails version: <g:meta name="app.grails.version"/></li>
            <li>Groovy version: ${GroovySystem.getVersion()}</li>
            <li>JVM version: ${System.getProperty('java.version')}</li>
            <li>Reloading active: ${grails.util.Environment.reloadingAgentEnabled}</li>
            <li>Controllers: ${grailsApplication.controllerClasses.size()}</li>
            <li>Domains: ${grailsApplication.domainClasses.size()}</li>
            <li>Services: ${grailsApplication.serviceClasses.size()}</li>
            <li>Tag Libraries: ${grailsApplication.tagLibClasses.size()}</li>
        </ul>
        <h1>Installed Plugins</h1>
        <ul>
            <g:each var="plugin" in="${applicationContext.getBean('pluginManager').allPlugins}">
                <li>${plugin.name} - ${plugin.version}</li>
            </g:each>
        </ul>
    </div>
</sec:ifAllGranted>
    <div id="page-body" role="main">
        <sec:ifLoggedIn>
                <p>Logged in as ${sec.username()} | <g:link controller='Logout' action=''>logout</g:link></p>
            </sec:ifLoggedIn>
            <sec:ifNotLoggedIn>
                <p>Welcome to College Now Portal, please <g:link controller='Login' action=''>login</g:link></p>
            </sec:ifNotLoggedIn>

        <div id="controller-list" role="navigation">

            <ul>
                <%--
                COMMENTED OUT GSP CONTROLLER LIST
                --%>
                <g:each var="c" in="${grailsApplication.controllerClasses.sort { it.shortName } }">
                    <li class="controller"><g:link controller="${c.logicalPropertyName}">${c.shortName}</g:link></li>
                </g:each>

                <sec:ifAnyGranted roles="ROLE_ADMIN,ROLE_COORDINATOR,ROLE_LIAISON,ROLE_TEACHER">
                <h1>Select a group to manage:</h1>
                    <h1 style="background-color:black; color:white; width:50%">People</h1>

                    <li class="controller"><a href="/collegenowapp/liaison/index">Liaisons</a></li>
                </sec:ifAnyGranted>
                <sec:ifAnyGranted roles="ROLE_ADMIN,ROLE_COORDINATOR">
                    <li class="controller"><a href="/collegenowapp/student/index">Students</a></li>
                </sec:ifAnyGranted>
                <sec:ifAnyGranted roles="ROLE_ADMIN,ROLE_COORDINATOR,ROLE_LIAISON">
                    <li class="controller"><a href="/collegenowapp/teacher/index">Teachers</a></li>
                </sec:ifAnyGranted>

                <sec:ifAnyGranted roles="ROLE_ADMIN,ROLE_COORDINATOR,ROLE_LIAISON,ROLE_TEACHER">
                <h1 style="background-color:black; color:white; width:50%">Items</h1>
                    <li class="controller"><a href="/collegenowapp/book/index">Books</a></li>
                <sec:ifAnyGranted roles="ROLE_ADMIN,ROLE_COORDINATOR,ROLE_LIAISON"> 
                    <li class="controller"><a href="/collegenowapp/course/index">Courses</a></li>
                    <li class="controller"><a href="/collegenowapp/discipline/index">Disciplines</a></li>
                    <li class="controller"><a href="/collegenowapp/school/index">Schools</a></li>
                    <li class="controller"><a href="/collegenowapp/section/index">Sections</a></li>
                </sec:ifAnyGranted>
                </sec:ifAnyGranted>

            </ul>
        </div>
    </div>
</div>
    <!-- SHOWING MEETINGS ON INDEX PAGE-->
            <table>
        <thead>
                <tr>

                    <th><g:message code="meetings.liaison.label" default="Liaison" /></th>

                    <th><g:message code="meetings.place.label" default="Place" /></th>

                    <th><g:message code="meetings.teacher.label" default="Teacher" /></th>

                    <th><g:message code="meetings.time.label" default="Time" /></th>

                </tr>
            </thead>
            <tbody>
            <g:each in="${meetingsInstanceList}" var="meetingsInstance">
                <tr>

                    <td><g:link action="show" id="${meetingsInstance.id}">${fieldValue(bean: meetingsInstance, field: "liaison")}</g:link></td>

                    <td>${fieldValue(bean: meetingsInstance, field: "place")}</td>

                    <td>${fieldValue(bean: meetingsInstance, field: "teacher")}</td>

                    <td><g:formatDate format="MM-dd-yyyy' at 'hh:mm' 'a" date="${meetingsInstance.time}" /></td>

                    </tr>
                </g:each>
                </tbody>
            </table>
            <div class="pagination">
                <g:paginate total="${meetingsInstanceCount ?: 0}" />
               </div>

    </body>
</html>

我不知道如何为索引页编写查询。文档非常小。请从头开始提供任何帮助。这段代码几乎可以工作。我返回的列表返回空。如果我在上面贴上标签,它会说列表为空。它不会读取任何内容。

【问题讨论】:

  • 什么是错误或问题?例外? “会议”是域类还是列表?为什么还要再次引用它作为控制器?很可能是controller="meetings" action="show" params="${id:it.id}"
  • 会议是一个领域类。错误是参数不正确或某些语法。我只是做得不对。我想查询,但没有关于如何在 gsp 和控制器之间进行设置的文档。
  • 那么请描述你的最终目标是什么,而不是提供一些编造的代码,这是行不通的。对于“无文档”,请参阅:grails.github.io/grails-doc/latest/ref/Tags/link.htmlgrails.github.io/grails-doc/latest/guide/…
  • 我希望我能显示更多相关信息,但这是我最好的尝试,抱歉我无法写出完美的问题,因为我不知道答案。我最好的描述在上面,并说我想在索引页面上显示域类的所有实例......不知道该怎么做。那是我的最终目标,并且在上面。不过我喜欢这些指南,我会检查出来的。关于查询的分步指南并不多,只是这里是你如何做的......我在哪里做的?控制器?域?控制台?....
  • 是的,您可以在控制器或服务中运行查询。这些结果建立了你的模型。该模型将在视图中使用。在视图中处理逻辑/域/...是不好的做法。

标签: grails grails-orm gsp


【解决方案1】:

您可以通过转到 Grails 应用程序中的 conf 文件夹轻松完成此操作。打开 UrlMappings.groovy 文件。

现在你会看到下面一行

"/"(view:"/index")

您必须将其更改为指向某个控制器/动作

"/"(controller:"CustomController", action:"index")

在 CustomController 中,您可以重用视图“/index”。例如,

class CustomController{

    def customService

    def index() {
        def retrievedData = customService.retrieveData(paramsIfNecessary)

        render(view:"/index", model: retrievedData)
    }
    .....
}

【讨论】:

    猜你喜欢
    • 2019-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-23
    • 1970-01-01
    • 1970-01-01
    • 2013-10-24
    • 2020-06-02
    相关资源
    最近更新 更多