我自己做的一个类似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版本可以发布,目前在写单元测试,以及最后少数功能的添加