0

我在 Spring MVC 应用程序中使用 Sitemesh 3 和 Freemarker。Freemarker 页面输出被传递给 Sitemesh 以应用 JSP 装饰器(一旦我整理好我的配置,它将是 FTL - 我有另一个关于此的 SO 问题 - 尚未得到解答)。

我已经让 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>

为了创建将在 div#contentheading 元素中呈现的某些属性,我需要在我的 .ftl 中做什么?

我有一个使用自定义过滤器实现的站点网格的 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

4

1 回答 1

1

一种不需要额外 SiteMesh 配置的简单方法是使用在您的 FTL 视图中添加标签。默认的 SiteMesh 3 标签处理器将自动解析这些标签,并使用“ meta. ”前缀将它们提供给您的装饰器。

超光速视图:

<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>
  ...
于 2013-07-28T14:34:16.430 回答