Velocity页面技术

Velocity页面技术

         Velocity  是一种基于java语言的模板引擎,使用这个简单、功能强大的开放格局,可以很容易的将数据对象灵活的与格式化文档(.vm文件)组装到一起。它可以使页面人员只关注页面的显示效果,java程序开发人员只关注业务逻辑编码。Context是Velocity的一个核心概念。Context在java层和模版视图层之间扮演一个“数据对象传送者”的角色:作为程序员可以将程序生成的不同类型的数据对象放入context中,对于页面设计人员,这些对象(包含数据域和命令将在模版元素中被引用)。


Velocity语法,参考:

http://www.open-open.com/doc/view/aa893717a65647f6a020c5e05b07e748

Velocity和java的配合,参考:

http://www.open-open.com/doc/view/3a175c4defc6462484dc7253ab267fa5

 

语法:

1.注释

注释有三种形式,与java中的注释类似,只是把java注释中的“/”改成了“#”:

(1)##这是一行注释

(2)#*

    这是多行注释

    这是多行注释

    这是多行注释

    *#

(3)#*

    这是个可以加入作者、版本信息的多行注释

    这是个可以加入作者、版本信息的多行注释

    这是个可以加入作者、版本信息的多行注释

    *#

2.引用类型

            VTL(Velocity 模版语言)有三种引用类型:变量、属性和方法。在VTL中所有的类型都会解析成为String。

(1)变量

VTL的命名规则比较简单,第一个字符必须是字母,其它部分限于以下类型:

字母(a..z, A..Z)

数字(0..9)

减号(“-”)

下划线(“_”)

            变量既可以通过set指令赋值,也可以通过java代码赋值。比如,yieldjava变量$foo的值为“abc”,当模版被请求,所有页面上的$foo都将被赋值“abc”。

 如果在模版中赋值,则用下面的语句:

#set($foo = "abc")

对于变量的引用有两种方式:$foo 和 ${foo}。具体怎样用,视情况而定吧。

(2)属性

             VTL变量的属性和其他语言累死,变量名后紧接一个“.”和另一个变量标识符,一下是属性的示例:

$customer.Address

$purchase.Total

(3)方法

            VTL的方法(Method)的概念和其他语言相差无几,方法也是以$开头(命令以#开头),后接VTL标识符和VTL方法体,最后有一对括号,括号内输入可选的参数列表。以下是几个示例:

$customer.getAddress()

$page.setTitle("My Home Page")

3.静引用

<input type="text" name="email"value="$email"/>

           这段代码中如果$email没有被赋值,字符串“$email”就会被显示出来,处于这方面的考虑,我们可以使用静引用,如下:

<input type="text" name="email" value="$!email"/>

在$和标识符之间用叹号隔开,这个时候当$email被赋值时和普通变量一样,但是当没被赋值时,$!email将默认为空字符串,也就不会显示咋爱页面上。

4.指令

VTL指令以#开头。

#set 指令

用于变量赋值。下面是一些例子:

#set( $monker=$bill) ##变量引用

#set($monkey.blame=$whitehouse.Leak) ##属性引用

#set($monkey.Say=["Not","my","fault"]) ##数组

#set($monkey.Map={"banana":"good","roastbeef":"bad"}) ##Map

         需要注意的是:当右值是一个为空或未定义的属性或方法的引用是,左值将不会被赋值,而是依旧保存旧值。

           另外就是:在使用#set指令时,双引号“”包围的文本中如果含有变量引用是会被解析的,但是以单引号‘’包围的字符串不会被解析。

 

if/elseif/else条件分支

#if($foo<10)

<strong>Go North</strong>

#elseif($foo==10)

<strong>Go East</strong>

#else

<strong>Go South</strong>

#end

 

#foreach循环

#foreach($productin $allProducts)

<li>$product</li>

#end

 

java中应用Velocity

 

一般步骤:

(1)对于所有应用,第一步要初始化Velocity,一般使用单例模式,如Velocity.init();

(2)创建一个Context object;

(3)将你的数据对象加入到Context对象中

(4)使用Velocity选择一个模版

(5)合并模版和数据导出到输出流

 

先做一个最简单的Velocity开发例子,让大家看看Velocity是怎样工作的:

1、创建1个文件,文件名为:hellovelocity.vm,即velocity模版(其实和html一样),内容:

Welcome$name to Javayou.com!

todayis $date.

2、创建1个java文件,HelloVelocity.java,内容:

import java.io.StringWriter;
import java.util.*;
import org.apache.velocity.app.VelocityEngine;
import org.apache.velocity.Template;
import org.apache.velocity.VelocityContext;
 
publicclass HelloVelocity {
 
public static void main(String[] args) throws Exception {
 //初始化并取得Velocity引擎
VelocityEngineve = new VelocityEngine();
 
ve.init();
//取得velocity的模版
Templatet = ve.getTemplate("hellovelocity.vm");
//取得velocity的上下文context
VelocityContextcontext = new VelocityContext();
//把数据填入上下文
context.put("name","Liang");
context.put("date",(new Date()).toString());
//输出流
String Writerwriter = new StringWriter();
//转换输出
t.merge(context,writer);
System.out.println(writer.toString());
}
}


 

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值