2013-07-26 38 views
0

我使用Sitemesh 3和Freemarker與我的Spring MVC應用程序。 Freemarker的頁面輸出傳遞到SiteMesh的一個JSP裝飾的應用程序(將FTL,一旦我得到我的配置整理出來 - 我有另一個問題,SO - 尚懸而未決)。我應該如何在我的Sitemesh 3模板中填充頁面標題?

我得到的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

回答

1

一個簡單的方法來做到這一點,不需要額外SiteMesh的配置是通過在您的FTL視圖中使用標籤。默認的SiteMesh 3標籤處理器會自動解析這些標籤,並使用「元.」前綴將它們提供給裝飾器。

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> 
    ... 
+0

完美的作品,非常感謝。 – DaFoot

相關問題