Содержимое флэш-сообщения потеряно в макете

Вот сценарий:
У меня есть макет: main.gsp
и есть страница, на которой применяется этот макет: homepage.gsp
У меня есть div в main.gsp, где я отображаю flash сообщение, если есть.

Теперь,
когда контроллер отправляет какое-либо флеш-сообщение, оно доступно в homepage.gsp, но когда к нему применяется макет и отображается страница, флеш-сообщение теряется.

Я хочу, чтобы флэш-сообщение было доступно в коде макета. Опять же, было бы предпочтительнее, если бы мне не нужно было добавлять какой-либо код в homepage.gsp, так как есть много таких страниц, где контроллер может возвращать флэш-сообщение.

Как мне справиться с этим?
Любая помощь высоко ценится.


person nIx..    schedule 06.01.2014    source источник
comment
Добавьте к вопросу макет, домашнюю страницу и код контроллера.   -  person dmahapatro    schedule 07.01.2014
comment
на самом деле коды слишком велики, чтобы размещать их здесь. Пожалуйста, дайте мне знать, если есть какие-то конкретные детали, которые я могу вам дать. Я вставлю эту часть кода.   -  person nIx..    schedule 07.01.2014
comment
Вам не нужно публиковать целые файлы, только те части, которые имеют какое-то отношение к вашей проблеме.   -  person lukelazarovic    schedule 07.01.2014


Ответы (1)


Это код, который я буду использовать, я проверил, и он работает. main.gsp

    <body>
    <div id="grailsLogo" role="banner"><a href="http://grails.org"><img src="${resource(dir: 'images', file: 'grails_logo.png')}" alt="Grails"/></a></div>
    <div>
        <g:if test="${flash.message }">
        ${flash.message }
        </g:if>
    </div>
    <g:layoutBody/>
    <div class="footer" role="contentinfo"></div>
    <div id="spinner" class="spinner" style="display:none;"><g:message code="spinner.alt" default="Loading&hellip;"/></div>
    <r:layoutResources />
</body>

Контроллер:

    package com.mtsinai

class EmployeeController {

    def index() { 
        flash.message = 'Welcome world'
    }
}

index.gsp

    <%@ page contentType="text/html;charset=UTF-8" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
<meta name="layout" content="main"/>
<title>Insert title here</title>
</head>
<body>
  <div class="body">

  </div>
</body>
</html>

Обратите внимание, что всплывающее сообщение будет отображаться поверх тела или страницы, которая будет отображаться.

person Hubert    schedule 07.01.2014