0

Spring MVC アプリケーションで Sitemesh 3 と Freemarker を使用しています。Freemarker ページの出力は、JSP デコレータを適用するために Sitemesh に渡されます (構成を整理すると 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>

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.」プレフィックスを使用してデコレータで利用できるようにします。

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