badqiu

XPer
随笔 - 46, 文章 - 3, 评论 - 195, 引用 - 0
数据加载中……

扩展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下一版本的更新内容,请关注.

 

 

posted on 2010-01-12 21:03 badqiu 阅读(1701) 评论(1)  编辑  收藏

评论

# re: 扩展freemarker,velocity,实现模板的管道操作[未登录]  回复  更多评论   

很好,这样就能实现很多复杂功能。
但我有个疑问。实际开发中,各个模块页面一般会单独测试,然后再整合到一起。
但是局部模块有时需要各种变量参数,有时单独测试没问题,整合后就会出现错误。或者整合后没问题,单独的就无法运行。
请问你是否遇到类似情况,怎么考虑和解决的?
2010-01-13 09:12 | lazy

只有注册用户登录后才能发表评论。


网站导航: