我在Spring MVC应用程序中使用Sitemesh 3和Freemarker。 Freemarker页面输出传递给Sitemesh以应用JSP装饰器(一旦我将我的配置整理出来将是FTL - 我还有另外一个关于这个问题的问题 - 尚未答复)。
我已经让Sitemesh 3正确地将正文应用于模板,现在我想添加到我的设置中,以便FTL视图可以设置将在页面标题中呈现的属性。
Sitemesh(JSP)模板/装饰器 - 这产生了正确的输出,但变量内容标题除外:
<div id="mainWrapper">
<div id="content">
<div id="contentheading"><sitemesh:write property="page.heading"></sitemesh:write></div>
<div>
<sitemesh:write property='body'/>
</div>
</div>
</div>
我需要在.ftl中做些什么才能创建一些将在div#contentheading元素中呈现的属性?
我使用自定义过滤器实现为sitemesh提供了Java配置:
public class SitemeshFilter extends ConfigurableSiteMeshFilter {
@Override
protected void applyCustomConfiguration(SiteMeshFilterBuilder builder) {
builder.setMimeTypes("text/html", "application/xhtml+xml");
builder.addDecoratorPath("/*", "/WEB-INF/templates/page.jsp");
}
}
请注意我使用的是Sitemesh 3
答案 0 :(得分:1)
执行此操作的简单方法是,在FTL视图中使用 标记,不需要额外的SiteMesh配置。默认的SiteMesh 3标记处理器会自动解析这些标记,并使用“ meta。”前缀将它们提供给装饰者。
FTL视图:
<html>
<head>
<title>Some title</title>
<meta name="heading" content="My page heading">
...
</head>
<body>
...
</body>
</html>
然后在你的装饰者:
<html>
...
<div id="content">
<div id="contentHeading"><sitemesh:write property="meta.heading"/></div>
....
</div>
...