2010-07-19 91 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