如何让grails显示列表视图

时间:2017-01-03 19:30:49

标签: grails gsp

我整晚都在寻找解决方案,但是我找到的少数人并没有坚持使用我使用的新版Grails。

我知道它之前仅限于6个字段,但现在我可以看到7.但是我需要更多列,无论页面是否混乱。

我还检查了f:table标签构造的代码,但是看不到那里有任何限制。

我不知道该怎么做,我需要明天早上准备好这个应用程序,所以我绝望地找到了解决方案。 请帮忙..

我使用GRAILS-3.2.3。 我可以采取任何域名,只有它有超过7个字段,第8及以上将不会显示。

我使用grails命令:(" generate-all" domain)来创建控制器和视图。没有做任何其他事情我得到了这个问题。 因此,我认为我不需要提供任何代码来展示 - 任何尝试此操作的人都应该遇到同样的问题。

下面是index.gsp的模板 - 有人可以解释这里列数限制的位置吗?

<!DOCTYPE html>
<html>
    <head>
        <meta name="layout" content="main" />
        <g:set var="entityName" value="\${message(code: '${propertyName}.label', default: '${className}')}" />
        <title><g:message code="default.list.label" args="[entityName]" /></title>
    </head>
    <body>
        <a href="#list-${propertyName}" class="skip" tabindex="-1"><g:message code="default.link.skip.label" default="Skip to content&hellip;"/></a>
        <div class="nav" role="navigation">
            <ul>
                <li><a class="home" href="\${createLink(uri: '/')}"><g:message code="default.home.label"/></a></li>
                <li><g:link class="create" action="create"><g:message code="default.new.label" args="[entityName]" /></g:link></li>
            </ul>
        </div>
        <div id="list-${propertyName}" class="content scaffold-list" role="main">
            <h1><g:message code="default.list.label" args="[entityName]" /></h1>
            <g:if test="\${flash.message}">
                <div class="message" role="status">\${flash.message}</div>
            </g:if>
            <f:table collection="\${${propertyName}List}" />

            <div class="pagination">
                <g:paginate total="\${${propertyName}Count ?: 0}" />
            </div>
        </div>
    </body>
</html>

我今晚做了最后一次试验,明天早上我会再次继续,因为我认为我需要对所有内容进行硬编码才能做好准备。 看看那个&#34; Anorak-Girl&#34;这是一个很好的建议。报告,但f:table-tag的来源没有显示任何限制 - 那么它可以在哪里? 非常感谢,但还有很多事要做。我会回来过夜。

以下是_table.gsp或f:table-tag的代码。

<table>
    <thead>
         <tr>
            <g:each in="${domainProperties}" var="p" status="i">
                <g:set var="propTitle">${domainClass.propertyName}.${p.name}.label</g:set>
                <g:sortableColumn property="${p.name}" title="${message(code: propTitle, default: p.naturalName)}" />
            </g:each>
        </tr>
    </thead>
    <tbody>
        <g:each in="${collection}" var="bean" status="i">
            <tr class="${(i % 2) == 0 ? 'even' : 'odd'}">
                <g:each in="${domainProperties}" var="p" status="j">
                    <g:if test="${j==0}">
                        <td><g:link method="GET" resource="${bean}"><f:display bean="${bean}" property="${p.name}" displayStyle="${displayStyle?:'table'}" /></g:link></td>
                    </g:if>
                    <g:else>
                        <td><f:display bean="${bean}" property="${p.name}"  displayStyle="${displayStyle?:'table'}" /></td>
                    </g:else>
                </g:each>
            </tr>
        </g:each>
    </tbody>
</table>

1 个答案:

答案 0 :(得分:2)

可能是f:table左右的限制。环顾四周: http://blog.anorakgirl.co.uk/2016/01/what-the-f-is-ftable/

  

最后......如何自定义f:table标签:

     

在/ grails-app / views / templates / _fields /

中放置一个名为_table.gsp的文件

手动执行此操作:

examplehere您可以手动迭代自己的属性。

所以在你的情况下

<g:each in="\${${propertyName}List}" var="myDom">
  <tr><td>${myDom.id}</td><td>${myDom.name}</td><td>and so on</td></tr>
</g:each>