`
badqiu
  • 浏览: 673872 次
  • 性别: Icon_minigender_1
  • 来自: 珠海
社区版块
存档分类
最新评论

扩展freemarker,velocity,实现模板的管道操作

阅读更多

操作系统中有一个很重要的功能,就是可以使用管道,即将前一个应用程序的输出流作为下一个应用程序的输入流. 现扩展的freemarker,velocity实现同样的功能。

一.功能介绍

 1.将前一个模板的输出,变成一个变量,后一个模板可以通过变量引用前一个模板的输出

 2.整个管道下的模板都在同一个context中,即模板间可以相互引用变量

 

二.管道定义表达式

 first.ftl | second.flt | three.flt

 

三.模板管道(Pipeline)示意图

管道示意图

 

四.API示例使用

Configuration conf = new Configuration();
//... other settings for Configuration
Pipeline pipeline = new FreemarkerPipeline(conf);
pipeline.pipeline("first.flt | second.flt | three.flt", map , writer);

五.管道与继承结合

将管道操作与我之前扩展的模板继承相结合,即可打造一个完美的页面布局框架.

管道+继承示意图如下:

管道+继承示意图

 

六.源代码

 请查看: http://rapid-framework.googlecode.com/svn/trunk/rapid-framework/src/rapid_framework_common/cn/org/rapid_framework/pipeline/

 

结论:

使用pipeline及继承相结合,目的是替换现有的布局工具:sitemesh,tiles,与sitemesh相比,现有的继承指令会比sitemesh的性能要高,继承的关系比tiles更加易于理解,打造一个适用于rapid-framework的全新页面布局系统.

 

以上相关内容属于rapid-framework下一版本的更新内容,请关注.

 

 

4
0
分享到:
评论
2 楼 azheng270 2011-04-09  
装饰器布局
<#macro workBenchHead title="" charset="utf-8" lang="zh-CN">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
        <#if title??><titlt>title</title></title></#if>
<#nested />
</head>
</#macro>
<#macro workBenchBody title>
<body>
<div>
<#nested />
</div>
</body>
</html>
</#macro>

被装饰页面
<#import "/decorators/MainDec.ftl" as dec />
<@dec.workBenchHead title="用户管理">
<script type="text/javascript" src="${app_context}/res/script/app/security/userManager.js"></script>
</@dec.workBenchHead>
<@dec.workBenchBody title="授权管理 - 用户管理">
body中的内容
</@dec.workBenchBody>

装饰后的页面代码
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script type="text/javascript" src="${app_context}/res/script/app/security/userManager.js"></script>
</head>
<body>
<div>
body中的内容
</div>
</body>
</html>
我是通过2个宏来实现的, 对我来说, 任何页面就是装饰head和body,参数什么的可以修改装饰器模板的宏定义, head和body的输出,其实就是<#nested />的内容
1 楼 wutao8818 2010-04-23  
类似 django 的 模板模式,我也觉得这个模式很好,只是能力有限,没有做到。

Great Work . Thx! 

相关推荐

    velocity和freemarker的比较

    标题“velocity和freemarker的比较”涉及到的是两个在Java Web开发中常用的模板引擎——Velocity和FreeMarker。它们都是用于将静态模板与动态数据结合,生成HTML或其他类型的文本输出,常用于MVC(模型-视图-控制器...

    模板:velocity和freemarker的比较

    Velocity和Freemarker模板技术比较 模板技术在现代软件开发中扮演着重要角色,而在目前最流行的两种模板技术中, Velocity 和 Freemarker 独占鳌头。在 WebWork2 中,我们可以随意选择使用 Freemarker 或 Velocity ...

    freemarker&velocity的使用

    总结,Freemarker和Velocity都是强大的模板引擎,它们能够帮助开发者高效地实现动态内容的生成。理解并掌握这两种工具,对于提升Java Web开发能力至关重要。通过阅读提供的"freemarker语法.doc"文档,你可以深入了解...

    Velocity 和 FreeMarker区别

    - **FreeMarker**:同样是一种基于Java的模板引擎,它提供了一个强大的模板语言,支持更复杂的逻辑处理,并且具有更好的灵活性和可扩展性。 #### 二、使用便捷性 **FreeMarker**相比**Velocity**而言,在大多数...

    jsp、freemarker、velocity简介和对比

    本文将重点介绍三种常用的Java Web模板引擎:JSP(Java Server Pages)、Freemarker以及Velocity,并对它们进行深入比较。 #### JSP (Java Server Pages) JSP是一种基于Java技术的服务器端动态网页技术,通过在...

    freemarker根据word模板生成word的完整示例

    Freemarker是一个基于模板的语言,它的核心是模板文件,模板文件中包含了一系列控制结构(如条件语句、循环)和变量引用。这些变量是由后台Java代码提供,模板引擎会将这些变量替换为实际值,然后生成最终的输出文档...

    Freemarker和Velocity的eclipse插件

    `VelocityWebEdit-1.0.8.zip`这个插件是针对Velocity模板的Eclipse扩展,它可以提供 Velocity模板的语法高亮、代码提示、代码格式化等功能,帮助开发者更好地管理和调试Velocity模板文件(`.vm`)。 Eclipse插件的...

    FreeMarker模板实现邮件发送

    1.这是一个在根目录下的mail.properties文件中配好发送邮件地址和接收邮箱地址的实例,利用freeMarker模板作为展示... 2.测试本例时要将根目录下mail.properties文件中邮箱地址和密码修改正确,最好选择...

    FreeMarker+poi 模板生成word+导入图片

    FreeMarker和Apache POI是两种在Java开发中广泛使用的工具,它们在处理文档生成和操作方面各有专长。本文将详细介绍这两个库如何协同工作来创建带有图片的Word文档。 **FreeMarker** FreeMarker是一个模板引擎,...

    通过freemarker模板 生成PDF

    本主题将深入探讨如何利用Freemarker模板和wkhtmltox工具来实现这一功能。 **Freemarker模板** 是一个强大的Java模板引擎,用于动态生成文本输出,如HTML、XML或PDF。它支持变量替换、控制结构(如if/else)和复杂...

    myeclipse freemarker编辑器模板插件及配置说明

    在MyEclipse中配置Freemarker模板,可以实现快速生成常见的Java Web项目中的视图层代码,如动态页面。例如,你可以为不同的页面元素(如头部、导航栏、内容区域等)创建模板,并在需要的地方插入这些模板,使得代码...

    当前流行的模板引擎效率分析(velocity,freeMarker,Smarty4j,httl)

    本篇文章将对四个流行的Java模板引擎——Velocity、FreeMarker、Smarty4j以及HTTL进行效率分析,旨在探讨它们在处理业务逻辑编译和性能方面的优劣。 1. Velocity: Velocity是Apache软件基金会的一个开源项目,以其...

    使用freeMarker模板和Spring boot后端API接口实现查询用户列表的功能。

    在本项目中,我们将利用FreeMarker模板语言和Spring Boot后端API接口来实现一个用户列表的查询功能。下面,我将详细讲解这个过程中的关键知识点。 1. **FreeMarker模板**: FreeMarker是一个Java模板引擎,它能够...

    freemarker-2.3.30模板word导出.zip

    压缩包中的Java代码很可能是实现数据模型与Freemarker模板结合,生成Word文档的核心部分。通常,这会涉及创建`Configuration`对象,加载模板文件,准备数据模型,以及调用`Template`对象的`process()`方法来生成...

    Velocity--java的模板引擎

    Velocity与JSP、FreeMarker等其他模板引擎相比,有其独特优势。Velocity的语法简洁,更接近自然语言,且由于它不支持脚本,避免了在模板中引入过多的业务逻辑,使得模板更加纯粹。此外,Velocity的性能也相对较高,...

    大型商城网站springmvc+freemarker+velocity+ibatis

    综合以上,这个大型商城网站项目利用了SpringMVC作为核心的后端控制框架,Freemarker和Velocity作为视图渲染引擎,iBatis负责数据库交互,构建了一个高效、可扩展的电商平台。源码可能包含了完整的业务流程,如用户...

    freemarker模板

    4. `TemplateDirectiveModel`和`TemplateMethodModel`: 分别表示指令和方法模型,用于实现自定义的模板扩展。 通过阅读源码,我们可以学习到FreeMarker如何解析模板,如何处理变量和表达式,以及如何执行自定义...

    java中freemarker实现对word的操作

    本篇文章将深入探讨如何利用FreeMarker在Java环境中实现对Word文档的操作。 一、FreeMarker简介 FreeMarker是一个基于模板的语言,其主要目标是将数据模型与展示逻辑分离。在Java应用中,开发者通常会创建一个数据...

    Freemarker模板生成pdf+java

    Freemarker模板生成pdf+javaFreemarker模板生成pdf+javaFreemarker模板生成pdf+javaFreemarker模板生成pdf+javaFreemarker模板生成pdf+java

Global site tag (gtag.js) - Google Analytics