Макеты Grails не применяются на 404 UrlMapping - PullRequest
4 голосов
/ 28 июня 2010

В приложении Grails 1.3.1 я хочу, чтобы 404 ошибки вызвали рендеринг основного действия индекса контроллера «список».Этот контроллер использует обычный файл макета в каталоге раскладок (views / layouts / list.gsp), который затем использует включенный фрагмент для этого действия (views / list / index.gsp).

При обычном доступе к этому действию (http://localhost/list/index), применяются и файл макета, и фрагмент кода, и он выглядит правильно. Однако при доступе через правило 404 в классе UrlMapping - "404 "(controller:" list ", action:" index ") - файл макета не используется, и отображается только фрагмент.

Кто-нибудь знает, почему это происходит, и если есть какой-либо способполучить обычную схему отображения для отображения ошибок 404 (или другого)?

Ответы [ 3 ]

5 голосов
/ 28 июня 2010

Некоторое время назад я знал, что это была ошибка в версии SiteMesh Grails. Существует способ обойти страницы с ошибками:

<g:applyLayout name="main">  
</g:applyLayout>

Вместо использования обычного:

<meta name="layout" content="main" />
2 голосов
/ 05 июня 2015

Другая вещь, которую нужно искать, это файл конфигурации sitemesh.xml. Sitemesh включается / выключается в зависимости от типа содержимого ответа, и этот файл объявляет значения типов содержимого, которые будет обрабатывать сетка сайта. В моем случае записи для text/html;charset=UTF-8 было недостаточно для обработки ответов типа text/html.

1 голос
/ 28 июня 2010

Вы уверены, что макет не применяется? Я использую Grails 1.3.2, и я думал, что макет не был применен, однако фактически это было отсутствие модели и тегов безопасности в макете после 404.

Если контент вашего макета получен из таких вещей, попробуйте сначала «Hello world», чтобы увидеть, появляется ли он.

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