распорки 2, плитки 2 динамическое название - PullRequest
6 голосов
/ 12 октября 2009

Я использую плитки 2.0.6 в качестве основы шаблона вместе со стойками 2.1.6. Я пишу простую страницу cms и хочу позволить пользователю определить заголовок каждой HTML-страницы.

У меня есть определение названия, подобное этому

    <definition name="base" template="/WEB-INF/jsp/templates/base.jsp">
        <put-attribute name="title" value=" "/>
        <put-attribute name="header" value="/WEB-INF/jsp/templates/header.jsp"/>  
        <put-attribute name="content" value="dummy"/>
        <put-attribute name="footer" value="/WEB-INF/jsp/templates/footer.jsp"/>   
        <put-attribute name="search" value="/WEB-INF/jsp/search.jsp"/>
    </definition>    
    <definition name="staticview" extends="base">
        <put-attribute name="title" value=" - Static"/>
        <put-attribute name="content" value="/WEB-INF/jsp/static/view.jsp"/>
    </definition>  

Вместо того, чтобы делать заголовок jsp, есть ли способ динамически переопределить заголовок (String) в моем header.jsp в более позднем атрибуте jsp, например, view.jsp. Или даже на 1 шаг дальше, используя EL

<put-attribute name="title" value="%{title}"/>

и пусть он динамически подбирает заголовок на стойках.

Пожалуйста, сообщите

Заранее спасибо

Ответы [ 6 ]

4 голосов
/ 28 февраля 2013

На странице просмотра нам нужно это -

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

Выше вы получите заголовок страницы. За исключением того, что мы хотим, чтобы заголовок страницы был динамическим, в конфигурации tile.xml я добавил

<definition name="page1" extends="base">
    <put-attribute name="title" value="Page 1"/>
    <put-attribute name="content" value="/WEB-INF/jsp/page1.jsp"/>
</definition>
<definition name="page2" extends="base">
    <put-attribute name="title" value="Page 2"/>
    <put-attribute name="content" value="/WEB-INF/jsp/page2.jsp"/>
</definition>

Теперь может показаться, что при наборе он будет выглядеть статичным. Но каждый раз, когда вы просматриваете эту страницу, заголовок должен быть одинаковым для этой страницы. Что может быть лучше для размещения этой информации, как на tile.xml.

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

Это работает, если вы хотите различный динамический заголовок для каждой страницы или что-то подобное.

1 голос
/ 26 марта 2012

Я попробовал это, и это работает.

Code1

<tiles:putAttribute name="title"> 
          You String
</tiles:putAttribute>

Код 2

<tiles:insertAttribute name="title" />

Но код1 должен выполняться раньше, чем код2.

1 голос
/ 09 сентября 2011

Сохраните определение плиток следующим образом:

    <put-attribute name="title" value=""/>

Добавьте title как свойство вашего класса действий.

И на странице view.jsp используйте это:

    <tiles:insertDefinition name="staticview">
        <tiles:putAttribute name="title"> 
            ${title} <%--OR, <s:property value="title"/>--%>
        </tiles:putAttribute>
        <%--Remainning content--%>
    </tiles:insertDefinition>
0 голосов
/ 13 августа 2013

Нашел это простое решение в другом месте:

Определение атрибута плитки как обычно:

 <put-attribute name="title"  value="welcome.title"/>

На странице jsp атрибут сначала импортируется, а затем его можно использовать с тегами Struts:

<tiles:importAttribute name="title" />
<title><s:text name="%{#attr['title']}"/></title> 
0 голосов
/ 15 февраля 2013

Лучшее решение, на мой взгляд, это использовать expression вместо value в определении тайлов и передавать $ {title}. Но, к сожалению, вам придется делать это в каждом представлении явно. См. Больше на http://symfony -world.blogspot.com / 2013/02 / dynamic-attribute-values-with-apache.html

0 голосов
/ 20 ноября 2009

Я добавляю заголовок к запросу в классе действия, вот мой код JSP для шаблона (плитки 1):

<title>
    <tiles:getAsString name="title"/>
    <%-- add additional title (if found) --%>
    <logic:present scope="request" name="title"><bean:write scope="request" name="title"/></logic:present>
</title>
...