地址: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模板语言(Velocity Template Language,简称VTL)是Apache软件基金会的Velocity项目中的一部分,它是一种用于生成动态网页内容的模板引擎。Velocity以其简洁、易读的语法,为Java开发者提供了一种高效的...
Velocity模板语言运行时,需要一个上下文(Context)来存放数据,这是模板和后端Java代码交互的地方。Java对象可以放入上下文,然后在模板中通过`$`访问。 ** Velocity与MVC模式** 在Web应用中,Velocity常与Model...
Velocity模板语言(VTL)是一种简洁的文本标记语言,用于描述如何组合数据和模板以生成输出。常见的VTL指令包括: - `${expression}`:插入表达式的值,如 `${user.name}`。 - `#set($var = "value")`:设置变量 `$...
Velocity 提供了一种简单的模板语言(Velocity Template Language,VTL),使得非程序员,如网页设计师,也能轻松地创建和维护模板。 在 HTML 或 XML 等标准格式中,处理和转换文本数据是一项常见的任务,Velocity ...
在Web应用开发中,Velocity作为一个强大的模板语言,广泛应用于生成HTML、XML、JSON等格式的输出。它使用简单的指令语言,如#set、#if、#foreach等,使得非程序员也能理解并修改模板内容。Velocity的核心理念是...
例如,一个简单的Velocity模板可能如下所示: ```html $title <h1>Welcome, $username! <p>Today is #formatDate($date, 'yyyy-MM-dd') ``` 在这个例子中,`$title` 和 `$username` 是从Java上下文中获取的...
1. **Velocity模板语言 (VTL)**:VTL是一种简单的脚本语言,用于在模板中插入变量和控制结构。例如,`$user.name`用于显示用户姓名。 2. **上下文(Context)**:存储在Velocity上下文中的变量可以在模板中访问。...
Velocity模板引擎为Java Web开发提供了强大且灵活的功能支持。通过上述知识点的学习,我们可以了解到Velocity的基本用法,包括变量定义、循环、条件判断、格式化、国际化支持等方面的内容。这些知识点是使用Velocity...
Velocity模板语言的另一个关键特性是它能够在模板中嵌入Java代码,从而实现复杂逻辑的处理。例如,可以使用#if、#else和#endif指令来实现条件逻辑,使用#foreach指令来进行循环控制。这些基本的逻辑控制结构使得页面...
MyEclipse-Velocity-2.0.8插件是一款针对集成开发环境MyEclipse的扩展插件,专门用于支持Velocity模板语言的开发。Velocity是Apache软件基金会的一个开源项目,它是一个简单、快速且强大的Java模板引擎,常用于Web...
1. **Velocity模板语言(VTL)** Velocity模板语言是Velocity的核心,它允许开发者在HTML、XML或其他文档类型中嵌入Java代码。VTL使用类似于#{...}的指令和$...$的引用,用于控制流程、访问对象属性和执行方法。...
Velocity 是一个开源的 Java 模板引擎,它允许开发者将静态页面内容与动态数据分离,使得开发者可以专注于业务逻辑,而设计师则可以专心于页面设计。Velocity1.4 是该引擎的一个版本,发布于较早时期,但其基本原理...
2. **模板语言**:Velocity模板语言(VTL)是 Velocity 的核心,它允许开发者在模板中嵌入Java代码,但不直接执行Java代码,而是通过VelocityEngine编译并执行。 3. **上下文(Context)**:Velocity中的Context对象...
总的来说,手动安装Velocity编辑器插件对于经常使用Velocity模板语言的开发者来说,是一个非常实用的操作。通过以上步骤,开发者可以自定义MyEclipse环境,使开发工作更加得心应手。同时,了解如何安装和配置这样的...
Velocity模板语言(VTL)的核心概念是变量引用和控制结构。变量引用通常以`$`符号开头,例如`$name`,表示从上下文中获取名为`name`的值。VTL还支持逻辑条件语句(if/else)、循环结构(#foreach)以及包含其他模板...
4. **安全性强**:由于Velocity不直接执行Java代码,而是通过Velocity模板语言(VTL),降低了代码注入的风险。 **Velocity模板语言(VTL)** VTL是Velocity的核心,它提供了一系列指令和引用,用于在模板中控制...
**一、Velocity模板语言(VTL)基础** 1. **变量引用**:在Velocity模板中,变量通常用`${variable}`表示,如`${name}`。这会引用Java对象的属性或方法。 2. **指令控制**:Velocity提供了多种控制结构,如`#if`...