`
yuanhuiwu
  • 浏览: 88002 次
  • 性别: 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

    freemarker模板

    4. **模板继承和导入**: 使用`&lt;#include&gt;`和`&lt;#import&gt;`,可以实现模板的复用和模块化。模板继承允许子模板继承父模板的结构,只需覆盖特定部分。 5. **注释**: 在FreeMarker中,`&lt;!--#--&gt;`用于HTML注释,`...

    FreeMarker模板语言API

    - `TemplateModel`:所有数据模型对象都必须实现此接口,以供FreeMarker访问。 4. **数据模型绑定** - `Map`:常用的数据模型,键值对形式,可以通过`ModelData`将Java对象转换为FreeMarker可识别的格式。 - `...

    Freemarker模版开发指南

    模板继承则通过`&lt;#assign&gt;`和`&lt;@parent&gt;`实现,子模板可以继承父模板的结构,然后进行定制。 5. **控制结构** Freemarker提供丰富的控制结构,如条件语句(`&lt;#if&gt;`, `&lt;#elseif&gt;`, `&lt;#else&gt;`)和循环(`&lt;#foreach&gt;`...

    freemarker 自定义freeMarker标签

    总的来说,自定义FreeMarker标签是提高模板引擎灵活性和扩展性的有效方式,也是Java开发中的一个重要技能。通过深入理解FreeMarker的工作原理和API,开发者可以构建出更强大、更符合项目需求的模板解决方案。

    Spring,Spring Data Jpa,freemarker,bootstrap实现的分页源代码

    在分页应用中,Spring可以用来创建服务层接口和实现,负责与数据库交互,处理分页逻辑。 **Spring Data JPA** 是Spring框架的一个模块,它简化了JPA(Java Persistence API)的使用,使得数据访问更加方便。通过...

    freemarker的jar包和代码

    - 使用模板继承和导入提高模板复用性。 - 合理配置模板缓存,优化性能。 7. **进阶特性** - **指令**:如`&lt;#assign&gt;`分配变量,`&lt;#import&gt;`导入其他模板。 - **自定义函数**:通过`TemplateMethodModelEx`接口...

    freemarker中文学习资料

    - **模板继承**:使用`&lt;#import&gt;`和`&lt;#include&gt;`指令可以引入其他模板,实现模板的复用。 - **布局模板**:通过`&lt;#assign&gt;`和`&lt;@...&gt;`指令,可以定义布局模板,实现模板的统一风格。 6. **Freemarker与Spring集成...

    activemq+freemarker练习

    3. **模板继承**:通过`&lt;#include&gt;`指令,可以实现模板的继承和复用,提高代码的可维护性。 4. **国际化支持**:FreeMarker支持多语言环境,方便进行国际化(i18n)处理。 5. **预编译功能**:可以预先编译模板,...

    FreeMarker入门指南API文档(中文版)

    3. 使用模板继承和导入(`#import`)来复用和组织模板片段。 **错误处理** FreeMarker会在遇到错误时抛出异常,如模板语法错误、数据模型缺失等。你应该捕获这些异常,并提供有意义的错误信息给用户。 总之,...

    Spring 使用Freemarker发送邮件的一个简单模板(代码不完整)

    标题“Spring使用Freemarker发送邮件的一个简单模板”指的是通过Spring的JavaMailSender接口和Freemarker模板来生成和发送邮件。首先,我们需要在项目中引入Spring和Freemarker的相关依赖,确保能够使用这两个库的...

    Freemarker 自定义标签 简单案例

    1. **编写Java类**:你需要定义一个处理自定义标签的Java类,这个类需要继承`freemarker.template.TemplateDirectiveModel`接口,并实现其方法。在这个类中,你可以编写处理逻辑,如接收参数、处理数据、生成输出。 ...

    freemarker及jeecms标签使用学习文档

    - **模板继承**:通过`&lt;#assign&gt;`和`&lt;#macro&gt;`实现模板的复用和扩展,`&lt;#import&gt;`和`&lt;#namespace&gt;`处理命名空间。 - **内置对象**:如`request`、`session`、`application`等,可以直接在模板中访问HTTP上下文中的...

    SpringBoot+JPA+Freemarker 生成动态SQL

    3. **配置Repository**:定义一个接口继承自JpaRepository,该接口将自动提供CRUD(创建、读取、更新、删除)操作。也可以自定义更复杂的查询方法。 4. **创建Freemarker模板**:在src/main/resources/templates...

    springboot整合redis集群、freemarker模板和多索引库solr,同时将redis集群作mybatis的二级缓存

    - 自定义的MyBatis缓存实现,继承自`Cache`接口,利用Spring Data Redis操作Redis。 - Spring Boot的Controller层,负责接收请求并调用Service层处理业务逻辑。 - Service层,其中包含使用MyBatis和Solr进行数据操作...

    手动创建 SpringMvc +SpringDataJpa+Hibernate+ freemarker mavenProject+ 环境切换 webDemo

    在本项目中,我们主要探讨如何手动构建一个基于SpringMVC、Spring Data JPA、Hibernate以及FreeMarker模板引擎的Maven工程,同时实现环境切换功能。这个基础框架为日常开发工作提供了必要的支持。 首先,SpringMVC...

    freemarker-2.3.23-中文手册.zip

    在Freemarker的API方面,我们可以看到一系列的类和接口,如`Configuration`用于设置Freemarker的全局配置,`Template`表示一个模板文件,`Environment`提供了模板执行时的上下文信息。开发者还可以通过`...

    实现通过jfinal框架自动扫描freemarker的自定义标签.zip

    1. **创建自定义标签库**:定义一个Java类作为自定义标签的处理器,继承自`freemarker.template.TemplateDirectiveModel`接口,并实现其方法。在这个类中,你可以编写处理标签逻辑的代码。 2. **配置扫描路径**:...

    SpringDataJpa整合FreeMarker源码样例

    3. **创建Repository**:定义一个接口继承自Spring Data JPA提供的`JpaRepository`,并指定对应的实体类和主键类型。这样,Spring Data JPA会自动生成CRUD方法。 4. **配置FreeMarker**:在Spring Boot配置类中,...

Global site tag (gtag.js) - Google Analytics