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

小弟我自己做的一个类似velocity的 模板语言

2012-11-07 
我自己做的一个类似velocity的 模板语言地址:http://beetl.sourceforge.net/ 当前状态:预览版 类似于veloc

我自己做的一个类似velocity的 模板语言

地址:http://beetl.sourceforge.net/ 当前状态:预览版 类似于velocity,jsp,stringtemplate,freemarker,codesmith .等等,并提供一些有趣独特的功能

?

?

Beetl 模板语言5分钟使用说明

1.? 最无聊的一个例子:Hello world

?

输出“hello,world!joel li.

?

2.? 还是很无聊的一个例子,for 和 if

?

#:}

3.? 自定义控制语句分隔符

不像jsp,velocity,freemark等模板语言,控制语句是在特定的符号内,如JSP, 是

<% %> .? Beetl允许自定义控制语句分割符,如可以在HTML模板中定义分割符号为

<!--:? 控制语句?? --> (看着象注释吧,哈哈)

在Shell模板脚本中定义控制语句以#:开头

BeeTemplate t = new BeeTemplate("<%var email='javamonkey';%>");

t.setStatementStart("<%"); ???????

4.? 自定义占位符

同样可以定位占位符号

?

5.? 自定义函数

必须实现

public interface? Function {

??? public Object call(Object... paras) ;

???

public class NVLFunction implements Function {

??? public Object call(Object... paras){

?????? if(paras.length!=2){

?????????? throw new RuntimeException("参数错误,期望Object,Object");

?????? }

?????? if(paras[0]==null){

?????????? return paras[1];

?????? }else{

?????????? return paras[0];

?????? }

??????????

??? }

BeeTemplate t = new BeeTemplate("$nvl(name,'N/A')$");

6.? 虚拟属性支持:

由于MVC架构中,M往往并不能完全满足V的需要,尤其M代表的是数据库模型,因为可以在Beetl为M增加虚拟属性来满足要求

?

如为java.util.Date类增加一个displayDate用于显示yyyy-MM-dd风格

BeeTemplate t = new BeeTemplate("$date.displayDate$");

t.registerVirtualAttributeEval(Date.class, "displayDate", new DateDisplayEval());

#:var ip= "192.168.1.1",port=7001;replaceProperties(ip,port){
ip=127.0.0.1
port=8002
#:}

?

$date, nvl=”N/A”,fm=’yyyy-MM-dd’$

?

?

以上部分是Beetl有趣的地方,其他特性就不一一列出来了,可以参考详细使用说明

?

当前版本:0.5.01

下载

浏览代码

?

?

更新历史

2011-6-22 修改了语法错时候不能正确显示原文bug

2011-6-20 更新Transform代码,自定义分隔符,占位符,以及增加Escape支持

2011-6-1 初始化一个版本

2011-5-12 开始开发模板语言,并最终命名为beetl

2011-4-1? 提出创建一个更为灵活,实用的模板语言想法

1 楼 javamonkey 2011-07-04   预计本月底runtime版本可以发布,目前在写单元测试,以及最后少数功能的添加

热点排行