首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

Freemarker模版实现接口和继承(上)

2012-12-18 
Freemarker模版实现接口和继承(下)Freemarker模版实现接口和继承(上)已经实现了模版的接口(或叫接口模版),

Freemarker模版实现接口和继承(下)

Freemarker模版实现接口和继承(上)已经实现了模版的接口(或叫接口模版),下面自定义一个指令<@extends>扩充<#include>,利用宏指令的特性,实现模版的继承(或叫继承模版)。这是我尝试过的最好方法,充分利用macro和include指令,最小的改动实现继承。

?

用法: <@extends path=""/>

可选参数: encoding,parse,用法参考include指令

?

注册:configuration.setSharedVariable(ExtendsDirective.DIRECTIVE_NAME, new ExtendsDirective());

?

使用:

?

<@extends? path="implement.ftl"/>
< #macro mid>
继承
< /#macro>

?

结果:

?

start

继承

end

?

原理:

?

修改<#include>特性,如果模版已经存在同名的宏指令定义,优先使用。否则使用<#include>模版里面的宏指令。

?

宏macro还有很多特性,如局部变量等等,请参考freemarker文档。充分利用接口模版,继承模版,使得开发freemarker模版变得更面向对象。

?

如果对你现在的开发有帮助,不胜荣幸。

?

Configuration configuration = new Configuration();configuration.setSharedVariable(ExtendsDirective.DIRECTIVE_NAME, new ExtendsDirective());

热点排行