поле класса домена не отображается на странице просмотра - PullRequest
1 голос
/ 23 сентября 2011

Я не могу просмотреть все приведенные ниже поля, когда я запускаю приложение Grails, поле «Стоимость» не отображается на странице просмотра, поля отображаются на странице добавления. Если я удаляю поле «имя», то отображается поле «стоимость». Есть ли предел поля, о котором я не знаю?

package racetrack

class Race {

    String name
    Date startDate
    String city 
    String state 
    BigDecimal distance 
    BigDecimal cost 
    Integer maxRunners = 100000

    static constraints = {

        name()
        startDate()
        city()
        state()
        distance()
        cost()
        maxRunners()
    }

}

List.gsp -

<%@ page import="racetrack.Race" %>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
        <meta name="layout" content="main" />
        <g:set var="entityName" value="${message(code: 'race.label', default: 'Race')}" />
        <title><g:message code="default.list.label" args="[entityName]" /></title>
    </head>
    <body>
        <div class="nav">
            <span class="menuButton"><a class="home" href="${createLink(uri: '/')}"><g:message code="default.home.label"/></a></span>
            <span class="menuButton"><g:link class="create" action="create"><g:message code="default.new.label" args="[entityName]" /></g:link></span>
        </div>
        <div class="body">
            <h1><g:message code="default.list.label" args="[entityName]" /></h1>
            <g:if test="${flash.message}">
            <div class="message">${flash.message}</div>
            </g:if>
            <div class="list">
                <table>
                    <thead>
                        <tr>

                            <g:sortableColumn property="id" title="${message(code: 'race.id.label', default: 'Id')}" />

                            <g:sortableColumn property="name" title="${message(code: 'race.name.label', default: 'Name')}" />

                            <g:sortableColumn property="startDate" title="${message(code: 'race.startDate.label', default: 'Start Date')}" />

                            <g:sortableColumn property="city" title="${message(code: 'race.city.label', default: 'City')}" />

                            <g:sortableColumn property="state" title="${message(code: 'race.state.label', default: 'State')}" />

                            <g:sortableColumn property="distance" title="${message(code: 'race.distance.label', default: 'Distance')}" />

                        </tr>
                    </thead>
                    <tbody>
                    <g:each in="${raceInstanceList}" status="i" var="raceInstance">
                        <tr class="${(i % 2) == 0 ? 'odd' : 'even'}">

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

                            <td>${fieldValue(bean: raceInstance, field: "name")}</td>

                            <td><g:formatDate date="${raceInstance.startDate}" /></td>

                            <td>${fieldValue(bean: raceInstance, field: "city")}</td>

                            <td>${fieldValue(bean: raceInstance, field: "state")}</td>

                            <td>${fieldValue(bean: raceInstance, field: "distance")}</td>

                        </tr>
                    </g:each>
                    </tbody>
                </table>
            </div>
            <div class="paginateButtons">
                <g:paginate total="${raceInstanceTotal}" />
            </div>
        </div>
    </body>
</html>

1 Ответ

3 голосов
/ 23 сентября 2011

Предполагая, что вы ссылаетесь на представление лесов list, леса представляют только шесть полей.

Базовая логика (от src/templates/scaffolding/list.gsp):

props.eachWithIndex { p, i ->
    if(i == 0 {
        // render the field as a link to the show view
    } else if(i < 6) {
        // render the field value
    }
}

Примечаниечто список свойств включает id.Поскольку вы определяете шесть полей в своих ограничениях, последнее не отображается (только id + первые пять).

Редактировать

Чтобы «исправить» это,у вас есть несколько вариантов:

  • Обновление кода представления списка лесов:

    1. Сначала выполните grails install-templates
    2. Откройте src/templates/scaffolding/list.gsp
    3. Найдите сегмент кода выше и измените условие

      Обратите внимание, что это изменит рендеринг для всех представлений лесов и сгенерированного списка.*

  • Создайте представление и обновите его вручную.

    Похоже, вы уже сгенерировали представление, поэтому вам просто нужно обновить его.Обратите внимание, что если вы сгенерируете его снова, он заменит ваши изменения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...