我使用的瓷砖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的,有一种方法动态覆盖在我header.jsp中的标题(字符串)在后来的jsp属性,例如view.jsp的。或甚至1个步骤还使用EL

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

和具有它拿起支柱标题OGNL动态。

请告知

在预先感谢

有帮助吗?

解决方案

在图页上,我们需要有这样 -

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

以上将让你的页面标题。除此之外,因为我们想要的页面标题是动态的,在tiles.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>

现在这似乎是打字就会使它看起来像它是静态的。但每次您查看页面时,标题应该是该页面相同。什么更好的地方有这样的信息,关于tiles.xml。

对于我来说这不是标题本身,而是我需要不同的页面标题。我不想看上下文属性来获得页面的路径,并确定了页面的标题。所以,这个工作对我来说,保持一切松散耦合的。

此,如果你想为每个页面或任何类似不同的动态标题的作品。

其他提示

请这样的瓦片定义:

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

添加标题由于在动作类的属性。

和在view.jsp的页面使用此:

    <tiles:insertDefinition name="staticview">
        <tiles:putAttribute name="title"> 
            ${title} <%--OR, <s:property value="title"/>--%>
        </tiles:putAttribute>
        <%--Remainning content--%>
    </tiles:insertDefinition>

我想这一点,和它的工作原理。

代码1

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

代码2

<tiles:insertAttribute name="title" />

但是CODE1必须code2产生之前执行。

在我看来,最好的解决办法是使用expression代替value在瓷砖的定义,并通过$ {TITLE}。但是,你必须做到在每个视图明确,很遗憾。多见于的http:// symfony的世界。 blogspot.com/2013/02/dynamic-attribute-values-with-apache.html

发现这个简单的解决方案在别处:

瓦片属性定义照例:

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

在一个jsp页面属性是第一进口,然后它可与支柱标签一起使用:

<tiles:importAttribute name="title" />
<title><s:text name="%{#attr['title']}"/></title> 

我的标题添加到Action类的要求,这是我的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>
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top