Установка заголовка страницы динамически с плитками2 и пружинными MVC - PullRequest
1 голос
/ 28 марта 2011

Я задавал себе этот вопрос довольно давно, и я не нашел хорошего решения для этого в сети.

Так что я использую Tiles2 и Spring MVC, и я хотел бы динамически устанавливать заголовок страницы в пределах фрагмента тела. Есть ли способ?

<definition name="mainTemplate" template="/WEB-INF/template/main.jsp">
 <put-attribute name="header" value="/WEB-INF/template/header.jsp" />
 <put-attribute name="footer" value="/WEB-INF/template/footer.jsp" />
 <put-attribute name="body" value="/WEB-INF/template/blank.jsp" />
</definition>

<definition name="list" extends="mainTemplate">
 <put-attribute name="body" value="/WEB-INF/jsp/list.jsp" />
</definition>

Мое текущее решение - установить заголовок в контроллере

 model.addAttribute("pageTitle", "blubb");

и выполнение c: out в шаблоне

Ответы [ 4 ]

4 голосов
/ 28 марта 2011

Техника плиток

Если под «Я хочу динамически установить заголовок страницы», вы имеете в виду «Я хочу установить заголовок страницы на основе отображаемой плитки, и я хочу использовать функцию плиток дляdo it "then:

  1. Определение свойства заголовка;что-то вроде этого:
  2. Ссылка на свойство pageTitle в макете страницы;как то так:
  3. Установите свойство pageTitle в любой значимой плитке;

Техника переменных

Самый простой способ сделать эту технику - добавить атрибут в модель и ссылаться на указанный атрибут с помощью выражения el.Например,

Вы можете сделать это в вашем контроллере:

String pageTitle;

pageTitle = "something";
Model.add("PageTitle", pageTitle);

Затем ссылаться на атрибут «PageTitle» на вашей странице следующим образом:

<head>
<title>${PageTitle}</title>

Вы можетеиспользуйте c: out следующим образом:

<head>
<title><c:out value="${PageTitle}"/></title>
1 голос
/ 11 января 2013

Вы также можете объединить два ответа DwB, чтобы получить лучшее из обоих миров:

<title>
    <tiles:insertAttribute name="title" ignore="true" />
    <c:if test="${not empty pageTitle}">
        <c:out value="${pageTitle}"></c:out>
    </c:if>
</title>

Полезно, когда вы хотите, чтобы на некоторых страницах были статические заголовки (поэтому вам нужно только установить его в файле tile.xml), а на некоторых страницах - полностью динамические заголовки (не устанавливайте ничего в файле tile.xml, просто добавьте pageTitle к вашей модели) или к обоим (мой любимый), где у вас есть статическая первая половина и динамическая вторая половина.

1 голос
/ 03 августа 2011

Это работает для меня.Что-то не так?

ПЛИТКИ:

<put-attribute name="myProjectRevision" value="1.0" type="string" />

JSP:

<span id="my-project-revision"><c:out value="${myProjectRevision}"/></span>
0 голосов
/ 29 марта 2011

tiles.xml:

<definition ... >
    ...
    <put-attribute name="title" value="My Title" />
</definition>

JSP:

<h1><tiles:getAsString name="title"/></h1>

Но это только хорошее решение, если ваше приложение имеет только один язык.

...