2012-03-12 34 views
0

我有一個基本的grails入口頁面,顯示了票務系統的事件列表。Grails分頁問題,​​按鈕沒有渲染,鏈接似乎也不工作

我遇到的一個PAGINATE按鈕問題第1頁2個鏈接不會看起來像按鈕和下一個字也只是一個超鏈接,它不會從2

隔開其次,鏈接他們自己,一旦點擊他們不起作用。他們拋出一個錯誤頁:

-------------------------------- 
HTTP Status 404 - /tictoc/store/activeEvents 
type Status report 
message /tictoc/store/activeEvents 
description The requested resource (/tictoc/store/activeEvents) is not available. 
Apache Tomcat/7.0.25 
-------------------------------- 


![page UI][1] 


    [1]: http://i.stack.imgur.com/ABPlB.png 

這裏是Show.gsp ...的PAGINATE部分,我想我的問題是:

<%@ page import="tictoc.Store" %> 
<!doctype html> 
<html> 
    <head> 
     <meta name="layout" content="main"> 
     <g:set var="entityName" value="${message(code: 'store.label', default: 'Store')}" /> 
     <title><g:message code="default.show.label" args="[entityName]" /></title> 
    </head> 
    <body> 

     <h1> Ticket Store </h1> 

     <table border=0 class="eventsTable"> 
      <tr> 

       <th>Event</th> 
       <th>Start </th> 
       <th>End </th> 
       <th>Description</th> 
      </tr> 
      <g:each var="event" in="${events}"> 

      <tr> 

       <td>${event.name}</td> 
       <td><g:formatDate format="MM/dd/yyyy" date="${event.startDate}"/></td> 
       <td><g:formatDate format="MM/dd/yyyy" date="${event.endDate}"/></td> 
       <td>${event.desc}</td> 
      </tr> 

      </g:each> 
     </table> 

     <div class="paginateButtons"> 
      <g:paginate controller="store" 
       action="activeEvents" 
       params="[name:active]" 
       total="${totalEvents}" /> 
     </div> 
    </body> 
</html> 

這裏是控制器... 我不知道問題是否存在,但我認爲 我會包括它以防萬一。


package tictoc 

import tictoc.Event 

class StoreController { 

    Event event 
    static defaultAction = "activeEvents" 

    def show = { 
     log.error 'exec activeEvents' 
     activeEvents() 
    } 

    def activeEvents = { 
     log.error 'exec activeEvents' 

     def max = Math.min(params.max?.toInteger() ?:10, 100) 
     def offset = params.offset?.toInteger() ?: 0 
     def total = Event.count() 
     def eventList = Event.getAll() 

     return [events:eventList, 
         totalEvents:total, 
         active:params.active] 
    } 
} 

回答

0

貌似幾件事情怎麼回事:

  1. 您的分頁控件的顯示可能是一個CSS問題。我想你已經定製或取代了默認的Grails web-app/css/main.css文件?如果是這樣,請嘗試在應用程序的CSS文件中添加和修改規則(如下所示)。

  2. 如果我按照你的例子,你的.gsp文件是store/show.gsp?由於您沒有在activeEvents return語句中指定視圖名稱,因此Grails在默認情況下查找store/activeEvents.gsp,並且如果此文件不存在將返回錯誤。根據您想要構建應用程序的方式,您在這裏有幾個選項。 (一)你可以改變你<g:paginate>標籤引用show動作,(b)您可以創建store/activeEvents.gsp視圖,或(c),你可以修改你的activeEvents return語句明確地使用現有的show圖:render(view: "show", model: [events: eventList, ...])

  3. 爲了使分頁控制值結轉通過結果頁面出現,一個選擇是做這樣的事情:

    def list = { 
        params.max = Math.min(params.int('max', 25), 100); 
        params.offset = params.int('offset', 0) 
        params.sort = params.sort ?: "name"; 
        params.order = params.order ?: "asc"; 
        return [ myList: DomainObject.list(params) ] 
    } 
    

默認的Grails 2.0分頁CSS:

.paginateButtons { 
    background: #fff url(../images/skin/shadow.jpg) bottom repeat-x; 
    border: 1px solid #ccc; 
    border-top: 0; 
    color: #666; 
    font-size: 10px; 
    overflow: hidden; 
    padding: 10px 3px; 
} 
.paginateButtons a { 
    background: #fff; 
    border: 1px solid #ccc; 
    border-color: #ccC#aaa #aaa #ccc; 
    color: #666; 
    margin: 0 3px; 
    padding: 2px 6px; 
} 
.paginateButtons span { 
    padding: 2px 3px; 
} 
+0

按鈕現在看起來。那很好。我改變了頁面/分頁以使用show closure ...,現在下一頁工作...除了它顯示相同的項目。我似乎無法更改顯示每頁的項目數量。我試圖def最大= Math.min(params.max?.toInteger()?:5,5) – user1260085 2012-03-12 18:14:59

+0

正確的是,需要另一個變化。在你的控制器中,將'Event.getAll()'替換爲'Event.list(params)' – 2012-03-12 19:03:09

+0

另外,我編輯了我的答案,以包含一個Controller列表閉包的示例。您需要根據您的具體情況對其進行調整。 – 2012-03-12 19:36:52