GRAILS: <g: layoutTitle> не работает - PullRequest
0 голосов
/ 04 мая 2018

Я хочу создать макет для моего приложения Grails на основе этого урока: http://grails.asia/grails-tutorial-for-beginners-layout-templates

Я создаю page.gsp со скелетом моей страницы:

<!DOCTYPE html>
<html>
<head>
    <title><g:layoutTitle default="Grails"/></title>
    <style>
    #header {background-color:#ffe0e0;text-align: center;}
    #footer {background-color:#e0e0ff;text-align: center;}
    </style>
    <g:layoutHead/>
</head>
<body>
    <div id="header">HEADER</div>

    <g:layoutBody/>
    <div id="footer">FOOTER</div>
</body>
</html>

И mainpage.gsp с основным содержанием:

    <!DOCTYPE html>
    <html>
    <head>
        <meta name="layout" content="page"/>
        <title>I am a test page</title>
        <link rel="stylesheet" href="${resource(dir: 'css', file: 'main.css')}" type="text/css">
    </head>
    <body>
    <p>Test page.</p>
    </body>
    </html>

Страница отображается в UrlMappings.groovy:

"/"(view:'/layouts/page')

Но когда я пытаюсь запустить свой проект, я всегда получаю сообщение об ошибке, подобное этому:

URI / Класс java.lang.NullPointerException Сообщение Ошибка обработки запроса; Вложенное исключение - org.grails.gsp.GroovyPagesException: Ошибка обработки GroovyPageView: [views / layouts / page.gsp: 4] Ошибка выполнения тега: [views / layouts / page.gsp: 4] Ошибка выполнения тега: null Вызванный нуль

Без этого работает нормально. Как я могу решить эту проблему?

1 Ответ

0 голосов
/ 04 мая 2018

Вы НЕ должны отображать страницы декоратора напрямую (из grails-app/views/layouts dir). Их цель - украсить ДРУГИЕ страницы.

Так что вместо ерунды вроде

"/"(view:'/layouts/page')

вы должны использовать что-то вроде:

"/"(view:'/mainpage')

так что ваш mainpage.gsp украшен layouts/page.gsp.

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