2010-07-19 97 views
4

我想創建一個主模板,其他每個視圖頁面都會繼承。關於freemarker模板的建議,想創建一個主模板

所以主模板將具有:

HEADER 
--CONTENT-- 
FOOTER 
  1. 頭將任選節目(如果該用戶已登錄),用戶名和其他用戶對象屬性。

  2. --CONTENT--是其他「繼承」視圖頁將注入其內容的佔位符。

所以我的問題是,這可能與freemarker?如果是這樣,任何指導?

我該如何將用戶對象從我的控制器操作傳遞給標題?理想情況下,對象將被傳遞到除了每個視圖頁面之外的其他位置(以避免在每個視圖頁面上維護此代碼)。

回答

2

是的,這是可能的。在我們的應用程序之類的用戶對象在session範圍存在的,但是這可能是任何範圍的freemarker訪問:

<#if Session.the_user?? && Session.the_user.loggedIn> 
    <#-- header code --> 
</#if> 

可以省略Session.和Freemarker的將搜索不同範圍對於給定的變量名。

注入內容,包括這在主模板的地步,你想查看頁面把它的內容:

<#nested> 

視圖頁面,然後宣稱他們使用的主模板作爲如下:

<#import "/WEB-INF/ftl/path/to/template/master.ftl" as com> 
<@com.template> 
    View page content 
</@com.template> 
+0

我使用的是Spring MVC,如果用戶在所有操作方法之前觸發的事件中登錄,我將加載用戶對象。我應該在哪裏存儲用戶對象呢? – Blankman 2010-07-20 02:33:18

+0

如果它在每個動作之前觸發,那麼它聽起來像請求範圍是保存用戶對象的好候選者。 – Pat 2010-07-20 10:11:03

+0

so request.attributeS? – Blankman 2010-07-20 14:00:21