地址:http://beetl.sourceforge.net/ 当前状态:预览版 类似于velocity,jsp,stringtemplate,freemarker,codesmith .等等,并提供一些有趣独特的功能
Beetl 模板语言5分钟使用说明
1. 最无聊的一个例子:Hello world
BeeTemplate t = new BeeTemplate("hello,world!$name$.");
t.set("name","joel li")
String result = t.getTextAsString() ;
System.out.println(result);
|
输出“hello,world!joel li.
2. 还是很无聊的一个例子,for 和 if
BeeTemplate t = new BeeTemplate(getFile());
List list = new ArrayList();
list.add(new User(“joel”,33));
list.add(new User(“lucy”,18));
t.set(“users”,list);
String result = t.getTextAsString() ;
System.out.println(result);
|
模板内容
#:for(u in users){
hello this is $u.name$.
#:if(u.age>18){
Click here
#:}else{
Too yong,go away
#:}
#:}
|
Beetl语法同javascript相似,是其中的一个子集。
如在模板中定义临时变量
#:var price = oldPrice*0.2,cac = true;
如在模板中调用方法
$casef(score,1,’Good’,2,’Bad’,’Defualt’)$
以下是有趣的,不同于其他模板语言的内容
3. 自定义控制语句分隔符
不像jsp,velocity,freemark等模板语言,控制语句是在特定的符号内,如JSP, 是
<% %> . Beetl允许自定义控制语句分割符,如可以在HTML模板中定义分割符号为
<!--: 控制语句 --> (看着象注释吧,哈哈)
在Shell模板脚本中定义控制语句以#:开头
如下例子定义了一个类似JSP的控制符
BeeTemplate t = new BeeTemplate("<%var email='javamonkey';%>");
t.setStatementStart("<%");
t.setStatementEnd("%>");
|
默认控制分割符号是#: 和 回车
4. 自定义占位符
同样可以定位占位符号
BeeTemplate t = new BeeTemplate("~userName~");
t.setPlaceholderStart("~");
t.setPlaceholderEnd("~");
|
默认是占位符是$
5. 自定义函数
可以为beetl增加内置函数
必须实现
public interface Function {
public Object call(Object... paras) ;
}
如模仿oralce NVL函数
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')$");
t.registerFunction("nvl", new NVLFunction());
|
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());
t.set("date", new Date());
|
如果在循环中,对象还具有__index,__count俩个虚拟属性以表示当前索引以及以及所属集合大小
7 文本处理函数:
并不是所有模板都适合用站位符号,有时候需要根据位置去替换,如数据库配置文件,我见到spring 使用占位符就是一个糟糕的想法。Beetl提供了根据位置替换的函数,并且开发者可以自由增加这些函数
#:var ip= "192.168.1.1",port=7001;replaceProperties(ip,port){
ip=127.0.0.1
port=8002
#:}
|
8 占位符格式化
甚至可以像Pipeline那样处理
$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 提出创建一个更为灵活,实用的模板语言想法
分享到:
相关推荐
Velocity模板(VM)语言介绍,简单的介绍,方便入门!
Velocity模板引擎Velocity模板引擎Velocity模板引擎Velocity模板引擎Velocity模板引擎Velocity模板引擎Velocity模板引擎Velocity模板引擎Velocity模板引擎Velocity模板引擎
是一个适合程序员自己的框架,简单明了.简单的源程序方便控制(自制) 基本没有配置,开发快速(也可加入注解使用更灵活) 使用缓存机制.提升性能 方便的拦截器处理公共事务 多视图渲染JspModelAndView,XmlModelAndView,...
Velocity模板实例 Velocity模板实例 Velocity模板实例 Velocity模板实例
Velocity模板入门简单DEMO, 代码有注解;
Velocity模板技术语法详细介绍,包括很详细的示例代码 1.变量………………………………………………………………………………1 2.循环………………………………………………………………………………2 3.条件语句...
史上最全Velocity模板使用指南中文版,适合初学者读阅
SpringBoot集成Mybatis,velocity模板
Velocity模板解析,通过Velocity模板自动替换表达式中的变量
Velocity.js 是velocity模板语法的javascript实现。Velocity 是基于Java的模板引擎,广泛应用在阿里集 体各个子公司。Velocity模板适用于大量模板使用的场景,支持复杂的逻辑运算,包含 基本数据类型、变量赋值和...
Velocity实现模板
Velocity的脚本语言
SpringBoot集成Mybatis,velocity模板展示数据
velocity是一个很实用的页面工具,相对于jsp更便于开发维护,本文档是他的一个基础使用工具,便于比更快学习使用velocity!
Velocity应用案例,Velocity夹包文件
Velocity是一个基于java的模板引擎(template engine)。它允许任何人仅仅简单的使用模板语言(template language)来引用由java代码定义的对象。 当Velocity应用于web开发时,界面设计人员可以和java程序开发人员...
velocity-web模板工具, 参考:http://blog.csdn.net/nature_fly088/article/details/52497779 和http://www.ibm.com/developerworks/cn/java/j-lo-velocity1/