需要的jar
(1).假如你是maven 用户 在pox.xml 中添加
<dependency>
<groupId>com.googlecode.rapid-framework</groupId>
<artifactId>rapid-core</artifactId>
<version>4.0.5</version>
</dependency>
(2).其他可以去 点击打开链接 下载
下面内容是页面 base.ftl 是最基本的页面 也就是父页面,其内容如下:
这样就是实现了Freemarker 的继承、覆盖
(1).假如你是maven 用户 在pox.xml 中添加
<dependency>
<groupId>com.googlecode.rapid-framework</groupId>
<artifactId>rapid-core</artifactId>
<version>4.0.5</version>
</dependency>
(2).其他可以去 点击打开链接 下载
项目 Spring mvc + freemarker 在这里的代码都是相关 Freemarker 实现继承
在Dispatch-servlet.xml 中添加如下
<!--这里是 Freemarker配置-->
<bean id="freemarkerConfig"
class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
<property name="templateLoaderPath" value="/WEB-INF/templates/" />
<property name="freemarkerSettings">
<props>
<prop key="date_format">yyyy-MM-dd</prop>
<prop key="time_format">HH:mm:ss</prop>
<prop key="datetime_format">yyyy-MM-dd HH:mm:ss</prop>
<prop key="number_format">0.######</prop>
<prop key="defaultEncoding">GBK</prop>
<prop key="url_escaping_charset">GBK</prop>
<prop key="locale">zh_CN</prop>
<prop key="template_update_delay">0</prop>
</props>
</property>
<property name="freemarkerVariables">
<map>
<entry key="xml_escape" value-ref="fmXmlEscape" />
<!--下面四个是在下面定义的-->
<entry key="extends" value-ref="extendsDirective"/>
<entry key="override" value-ref="overrideDirective"/>
<entry key="block" value-ref="blockDirective"/>
<entry key="super" value-ref="superDirective"/>
</map>
</property>
</bean>
<bean id="fmXmlEscape" class="freemarker.template.utility.XmlEscape" />
<bean id="viewResolver"
class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
<property name="exposeSpringMacroHelpers" value="true" />
<property name="requestContextAttribute" value="rc" />
<property name="prefix" value="/" />
<property name="suffix" value=".ftl" />
<property name="contentType" value="text/html;charset=GBK"></property>
</bean>
以下代码是利用 rapid 实现Freemarker 页面继承
<!-- freemaker Directive-->
<bean id="blockDirective" class="cn.org.rapid_framework.freemarker.directive.BlockDirective"/>
<bean id="extendsDirective" class="cn.org.rapid_framework.freemarker.directive.ExtendsDirective"/>
<bean id="overrideDirective" class="cn.org.rapid_framework.freemarker.directive.OverrideDirective"/>
<bean id="superDirective" class="cn.org.rapid_framework.freemarker.directive.SuperDirective"/>
下面内容是页面 base.ftl 是最基本的页面 也就是父页面,其内容如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title><@block name="popTitle" >原来的title</@block></title>
</head>
<body>
<div>
<h3><@block name="body" >原来的内容</@block></h3>
</div>
</body>
</html>
base1.ftl 内容是继承 base.ftl 内容如下:
<@override name="popTitle">
title
</@override>
<@override name="body">
body
</@override>
<@extends name="base.ftl"/>
这样就是实现了Freemarker 的继承、覆盖