Рендеринг вид, но нет объекта в GSP - PullRequest
0 голосов
/ 12 февраля 2019

Я пытаюсь визуализировать представление, которое работает нормально, но, похоже, не получает объект модели, который я передаю ему.Я не могу понять причину, так как это должно быть очень простым в соответствии со всеми руководствами и примерами.

Объект модели

class Race {

    def distance = "1/4 mile"
    def racer1
    def racer2
}

RaceController рендерит здесь

def doFullRace(Race race) {

            render (view: 'raceProgress', model: [race: race])
        }

и raceProgress.gsp должно отображать это достаточно легко

    <html>
    <body>
        <div id="raceStart" align="center">
...
            <p>${race.racer1} is racing ${race.distance} against ${race.racer2}</p>
        </div>
    </body>
    </html>

но вместо этого я получаю это object not found

Любые идеи о том, что я пропустил

1 Ответ

0 голосов
/ 12 февраля 2019

У вас есть следующее:

def doFullRace(Race race) {
    render (view: 'raceProgress', model: [race: race])
}

Один из способов для race будет null, если все следующие условия верны:

  • Race является классом домена
  • Запрос, отправленный на doFullRace, включает параметр запроса с именем id
  • В базе данных нет записи с id, которая соответствует params.id

С http://docs.grails.org/3.3.9/guide/theWebLayer.html#commandObjects...

Если тип объекта команды относится к классу домена и существует параметр запроса id, то вместо вызова конструктора класса домена для созданияДля нового экземпляра будет сделан вызов статическому методу get в доменном классе, а значение параметра id будет передано в качестве аргумента.

И ...

Если тип объекта команды является классом домена и отсутствует параметр запроса идентификатора или имеется параметр запроса идентификатора, а его значение пусто, то значение null будет передано в действие контроллера, если метод HTTP-запроса не является «POST»,в этом случае новые модулиЭтот класс домена будет создан путем вызова конструктора класса домена.Во всех случаях, когда экземпляр класса домена не равен NULL, привязка данных выполняется только в том случае, если метод HTTP-запроса «POST», «PUT» или «PATCH».

...