一尘不染

支柱2,图块2动态标题

jsp

我正在使用tile 2.0.6作为我的模板框架以及struts 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之外,还有一种方法可以在更高版本的jsp属性中动态覆盖我的header.jsp上的标题(字符串),例如view.jsp。甚至还可以使用EL再走1步

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

并让它动态地在struts ognl上获取标题。

请指教

提前致谢


阅读 286

收藏
2020-06-08

共1个答案

一尘不染

在查看页面中,我们需要拥有-

<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属性来获取页面的路径并确定页面的标题。因此,这对我有用,并使所有内容保持松散耦合。

如果您要为每个页面或类似内容使用不同的动态标题,则此方法有效。

2020-06-08