我想知道如何使用装饰器提取特定 DIV 的内容,而不是使用<decorator:body />
它将获取<body>
标签内的所有内容。
问问题
2477 次
3 回答
3
我正在使用的 sitemesh 版本 2.4.2 是可能的。在christian grobmeier 上找到 anwser 所以这是我的sitemesh.xml
<sitemesh>
<property name="decorators-file" value="/WEB-INF/decorators.xml"/>
<excludes file="${decorators-file}"/>
<page-parsers>
<parser content-type="text/html" class="com.opensymphony.module.sitemesh.parser.HTMLPageParser"/>
</page-parsers>
<page-parsers>
<parser content-type="text/html" class="com.opensymphony.module.sitemesh.multipass.DivExtractingPageParser"/>
</page-parsers>
<decorator-mappers>
<mapper class="com.opensymphony.module.sitemesh.mapper.ConfigDecoratorMapper">
<param name="config" value="${decorators-file}"/>
</mapper>
</decorator-mappers>
</sitemesh>
这是我的 mainlayout.jsp 的片段
<div id="container" style=" padding-top: 60px; ">
<div id="leftbar">
<div style="height:400px;">
<img src="<spring:url value='/images/Logo.png'/>" class="logo"/>
</div>
<decorator:getProperty property="div.side-menu"/>
<%--<decorator:body />--%>
</div>
<div>
<decorator:getProperty property="div.top" />
</div>
<div>
<decorator:getProperty property="div.content" />
</div>
</div>
home.ftl 的片段(使用 freemarker)
<div id="side-menu">
<ul>
<li class="current"><a href="/home">All</a></li>
<#list genre as gen >
<li><a href="/category?cat=${gen}">${gen}</a></li>
</#list>
</ul>
</div>
<div id="top">
<ul id="slider" class="architectorSlider">
<li>
<img src="<@spring.url '/images/slide_1.jpg'/>" alt="" class="slide-image"/>
<img src="<@spring.url '/images/slider/timthumbf014.jpg'/>?src=<@spring.url '/images/slide_1.jpg' />&w=100&h=42&zc=1"
alt="" class="slide-thumbnail"/>
</li>
</ul>
</div>
如果还不算太晚,我希望这能让你继续前进:D
于 2012-02-14T17:24:45.580 回答
0
NB Black Sensei 在下面发布了更好的答案。
我不认为这是可能的。Sitemesh 是一个非常基本的模板系统,只有很少的标签——总共五个。这里有一个完整的列表装饰器标签库
如果您需要这种级别的控制,您可能想查看另一个模板系统。
于 2010-09-15T09:53:13.683 回答
0
SiteMesh 带有 com.opensymphony.module.sitemesh.multipass.DivExtractingPageParser。它的功能有限;它只提取身体下方一级的div。
于 2010-09-27T13:13:14.537 回答