于是结合struts2+Freemarker做过的项目进行思考,原来用struts2+Freemarker也可以轻松做到Django模板的功能,几天试用下来,那不是一般的爽,sitemesh暂时放一边去吧。
以一个例子来说明
1. 首先定义模板,假设路径为: /webapps/exam/base.ftl, 定义基本布局
<@title/> Welcom
<#if content?exists> <@content/> #if> <#if images?exists> <@images/> #if> <#if comment?exists> <@comment/> #if>
2003-2008 xxx.com. All rights reserved.
分为头、正文内容区域、图片区域、评论区域、尾,这是一个很简单的布局
2. 写一个简单的页面来测试,路径:/webapps/exam/simple.ftl,内容如下
<#include "/exam/base.ftl"/> <#macro title> 测试 #macro> <#macro content> 蒂皮出版的《我的野生动物朋友》一书中,配有她的父母现场拍摄的130多幅照片,展现小女孩与各种凶残的非洲野生动物毫无顾忌玩耍的情景。这本书的广告称,这是又一个“狼孩”故事。 #macro> <#macro comment>
用户评论
Tom Say: very good
#macro>
这个简单页面就完成了,在simple.ftl中我们不关心布局,爱怎么摆就怎么摆,浏览器中可以看到效果了。
3. 通过继承增强simple.ftl
现在用户的需求来了,要在书籍介绍下显示插图,可以直接修改上面的simple.ftl来实现,另外我们来看看继承simple.ftl来实现这个需求,添加一个文件:/webapps/exam/image-book.ftl,内容如下:
<#include "/exam/simple.ftl"/> <#macro images>#macro>
现在来看看,很好,已经在原来的页面上加上了图片。
这个例子非常简单,只是为了说明如何实现模板继承,应用场景应该很多。项目中正在用,感觉很方便。