`
yuanhuiwu
  • 浏览: 87219 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

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模版变得更面向对象。

 

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

 

0
2
分享到:
评论
2 楼 yuanhuiwu 2011-08-18  
Configuration configuration = new Configuration();
configuration.setSharedVariable(ExtendsDirective.DIRECTIVE_NAME, new ExtendsDirective());
1 楼 huhaihao0123 2011-08-18  
请问,如何注册:configuration.setSharedVariable(ExtendsDirective.DIRECTIVE_NAME, new ExtendsDirective());?
我的模板中就是找不到那些指令,寻求帮助啊

相关推荐

    freemarker模版继承

    扩充freemarker实现模版继承指令,可以实现类似java的继承,模版现在也可以继承了,也可以实现接口.freemarker interface,freemarker extends

    Struts2入门教程(全新完整版)

    方式一,实现Interceptor接口。 28 方式二、继承AbstractInterceptor抽象类 29 方式三、继承MethodFilterInteceptor类 30 3.使用来MethodFilterInterceptor灵活拦截 32 4.使用默认的execAndWait拦截器 33 5. ...

    Struts2 in action中文版

    4.5.1 实现Interceptor接口 78 4.5.2 构建AuthenticationInterceptor拦截器 79 4.6 小结 82 第5章 数据转移:OGNL和类型转换 84 5.1 数据转移和类型转换:Web应用程序领域的常见任务 85 5.2 OGNL和Struts 2 85 ...

    Spring 2.0 开发参考手册

    14.4. Velocity和FreeMarker 14.4.1. 需要的资源 14.4.2. Context 配置 14.4.3. 创建模板 14.4.4. 高级配置 14.4.5. 绑定支持和表单处理 14.5. XSLT 14.5.1. 写在段首 14.5.2. 小结 14.6. 文档视图(PDF/...

    struts2讲义_吴峻申

    5.6.1 主题和模板介绍 116 5.6.2 非表单标签介绍 119 5.7 Struts2自定义标签实现图形验证功能 121 第6章 Struts2非JSP视图技术 125 6.1 velocity视图技术使用介绍 125 6.2 freemarker视图技术使用介绍 128 6.3 ...

    Spring中文帮助文档

    14.4. Velocity和FreeMarker 14.4.1. 需要的资源 14.4.2. Context 配置 14.4.3. 创建模板 14.4.4. 高级配置 14.4.5. 绑定支持和表单处理 14.5. XSLT 14.5.1. 写在段首 14.5.2. 小结 14.6. 文档视图(PDF/...

    Spring API

    14.4. Velocity和FreeMarker 14.4.1. 需要的资源 14.4.2. Context 配置 14.4.3. 创建模板 14.4.4. 高级配置 14.4.5. 绑定支持和表单处理 14.5. XSLT 14.5.1. 写在段首 14.5.2. 小结 14.6. 文档视图(PDF/...

    Spring-Reference_zh_CN(Spring中文参考手册)

    11.2. 利用JDBC核心类实现JDBC的基本操作和错误处理 11.2.1. JdbcTemplate类 11.2.2. NamedParameterJdbcTemplate类 11.2.3. SimpleJdbcTemplate类 11.2.4. DataSource接口 11.2.5. SQLExceptionTranslator接口 ...

    spring chm文档

    14.4. Velocity和FreeMarker 14.4.1. 需要的资源 14.4.2. Context 配置 14.4.3. 创建模板 14.4.4. 高级配置 14.4.5. 绑定支持和表单处理 14.5. XSLT 14.5.1. 写在段首 14.5.2. 小结 14.6. 文档视图(PDF/...

    cms后台管理

    将解压后得到的jeecms-3.0.2-final文件夹下的root文件夹更名为jeecms拷贝到tomcat 安装目录下的webapps 文件夹下(例如: D:\Tomcat 6.0\webapps\),启动tomcat,在地址栏中输入http://localhost:8080/jeecms, 您...

    单点登录源码

    服务网关,对外暴露统一规范的接口和包装响应结果,包括各个子系统的交互接口、对外开放接口、开发加密接口、接口文档等服务,可在该模块支持验签、鉴权、路由、限流、监控、容错、日志等功能。示例图: ![API网关]...

    Code-Generate::rocket: 一个基于原生Mysql & SpringBoot & Mybatis 的代码生成器,建表之后即可完全解放双手

    允许开发者继承接口实现自定义文件内容,阅读简单开源项目的首选 测试同学的测试Demo案例,1秒钟造一个,就说快不快 学生党快速交作业(咳咳咳,如果你是该类,一定要关注加点赞啊!) 效果演示 步骤说明: 自行建立...

Global site tag (gtag.js) - Google Analytics