Grails: 404 и ленивая инициализация - PullRequest
3 голосов
/ 18 января 2011

Если вы посещаете страницу, которая не существует, а 404 «выбрасывается» и Grails пытается отобразить мою пользовательскую страницу ошибки 404, я получаю ленивые ошибки инициализации от некоторых имеющихся у меня тегов, которые выполняются в макете ошибок.

На самом деле taglib пытается получить доступ к объекту домена внутри другого объекта домена, который имеет отношение has-many.Он может получить начальный объект, но при доступе к взаимосвязи выдает эту ленивую ошибку инициализации.

Однако этого не происходит, когда к любой другой странице обращаются должным образом.Даже если я попытаюсь получить доступ к моей пользовательской странице ошибок напрямую.Только когда выдается ошибка 404.

Есть ли что-то другое в сеансе гибернации в это время, которое вызывает ленивую ошибку инициализации?

Возможно ли, что доступ к чему-то, что лениво инициализируется в taglib, не является хорошей идеей в Grails?

1 Ответ

2 голосов
/ 27 января 2011

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

В этом случае контроллер отсутствует.

Что касается хаков, чтобы обойти эту проблему ...

Мне интересно, если вы не можете начать сеанс / завершить сеанс в вашем GSP и / или taglib, чтобы вызвать поведение на данный момент. Другая идея состоит в том, чтобы принудительно считывать отношения в то же время, когда вы получаете доступ к исходному (родительскому) объекту - это инициализирует ленивые отношения.

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