FreeMarker是一个用Java语言编写的模板引擎,它基于模板来生成文本输出。FreeMarker与Web容器无关,即在Web运行时,它并不知道Servlet或HTTP。它不仅可以用作表现层的实现技术,而且还可以用于生成XML,JSP或Java 等。
本博客以前也有类似文章,Freemarker 入门示例(http://www.javacui.com/Framework/91.html ),FreeMarker 整合Struts2示例(http://www.javacui.com/opensource/89.html ),SiteMesh入门示例(http://www.javacui.com/opensource/43.html ),下面来说下SiteMesh结合Freemarker或velocity使用。
那么如何将Freemarker与SiteMesh结合起来使用,这在官方示例中已经有了相关例子。
查看官方示例中decorators.xml文件,里面有一段是关于Freemarker使用的
<decorator name="freemarker" page="freemarker.ftl">
<pattern>/freemarker.html</pattern>
</decorator>
也就是说请求freemarker.html时会拦截并处理,并发freemarker.ftl作为默认页面处理
看一下freemarker.ftl的内容,因为在JSP中是使用标签来获取Head或者Body的,所以在这个页面主要是看看如何获取这些元素。
<html>
<head>
<title>Freemarker Decorator - ${title}</title>
<link href="${base}/decorators/main.css" rel="stylesheet" type="text/css">
${head}
</head>
<body>
<div id="pageTitle">${title}</div>
<hr/>
${body}
<div id="footer">
<b>Disclaimer:</b> This site is an example site to demonstrate SiteMesh. It serves no other purpose.
</div>
</body>
</html>
可以看到,直接通过$来获取几个元素,${title}、 ${head}、${base}、${title}、${body}
velocity的结合是一样的,看看关于他的配置
<decorator name="velocity" page="velocity.vm">
<pattern>/velocity.html</pattern>
</decorator>
看看velocity.vm页面内容
<html>
<head>
<title>Velocity Decorator - $title</title>
<link href="$base/decorators/main.css" rel="stylesheet" type="text/css">
$head
</head>
<body>
<div id="pageTitle">$title</div>
<hr/>
$body
<div id="footer">
<b>Disclaimer:</b> This site is an example site to demonstrate SiteMesh. It serves no other purpose.
</div>
</body>
</html>
不多解释了。
也就是,如果你需要一些功能时,网上看的资料是简单入门,关键的东西,官方文档一般都可以找到的。