【问题标题】:How should I populate the page heading in my Sitemesh 3 template?我应该如何在我的 Sitemesh 3 模板中填充页面标题?
【发布时间】:2013-07-27 03:41:58
【问题描述】:

我在 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>

我需要在我的 .ftl 中做什么才能创建一些将在 div#contentheading 元素中呈现的属性?

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

【问题讨论】:

    标签: spring-mvc freemarker sitemesh


    【解决方案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>
      ...
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-05
      相关资源
      最近更新 更多