Grain paginate проблема, кнопки не рендеринга и ссылки, кажется, не работают - PullRequest
0 голосов
/ 12 марта 2012

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

Я испытываю проблему с кнопками пагинации в том, что ссылки на странице 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]
    }
}

1 Ответ

0 голосов
/ 12 марта 2012

Похоже, происходит несколько вещей:

  1. Отображение ваших элементов управления нумерацией страниц, вероятно, является проблемой CSS. Я полагаю, вы настроили или заменили файл Grails web-app/css/main.css по умолчанию? Если это так, попробуйте добавить и адаптировать правила (ниже) к файлу CSS вашего приложения.

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