2012-03-12 2 views
0

У меня есть базовая страница вступления Грааля, показывающая список событий для системы билетов.Grails paginate issue, кнопки не отображаются, и ссылки, похоже, не работают

Я испытываю проблемы кнопки постраничной в том, что страница 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 ... раздел постраничной где я думаю, что мой вопрос:

<%@ 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? Поскольку вы не указываете имя представления в операторе return activeEvents, Grails по умолчанию ищет store/activeEvents.gsp и вернет ошибку, если эти файлы не существуют. Здесь у вас есть несколько вариантов, в зависимости от того, как вы хотите структурировать свое приложение. (А) Вы можете изменить <g:paginate> тегов для ссылки на show действия, (б) вы можете создать store/activeEvents.gsp вид, или (с) вы можете изменить ваши activeEvents вернуться оператором явно использовать существующий 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

Кнопки выглядят прямо сейчас. Это было хорошо. Я изменил страницу/paginate, чтобы использовать закрытие шоу ... и теперь работает следующая страница ... кроме того, что она показывает одни и те же элементы. И я не могу изменить количество отображаемых на странице страниц. Я попытался определить max = Math.min (params.max? .toInteger()?: 5, 5) – user1260085

+0

Правильно, требуется другое изменение. В вашем контроллере замените 'Event.getAll()' на 'Event.list (params)' –

+0

Кроме того, я отредактировал свой ответ, чтобы включить образец Controller 'list'. Вам нужно будет адаптировать его для вашего конкретного случая. –

 Смежные вопросы

  • Нет связанных вопросов^_^