项目 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"/>
<!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"/>