Fork me on GitHub
代码改变世界

Velocity模板引擎语法

2015-10-19 20:47  autrol  阅读(24868)  评论(0编辑  收藏  举报

Velocity 模板引擎介绍

Velocity是一个基于java的模板引擎(template engine)。它允许任何人仅仅简单的使用模板语言(template language)来引用由java代码定义的对象。当Velocity 应用于web开发时,界面设计人员可以和java程序开发人员同步开发一个遵循MVC架构的web站点,也就是说,页面设计人员可以只关注页面的显示效果,而由java程序开发人员关注业务逻辑编码。

引入Velocity的发布包

http://velocity.apache.org/网站上下载最新的Velocity,引入jar包。

Velocity基本语法

"#"用来标识Velocity的关键字,包括#set、#if 、#else、#end、#foreach、#end、#include、#parse、#macro等;

"$"用来标识Velocity的变量;如:$i$msg$TagUtil.options(...)等。

"{}"用来明确标识Velocity变量;比如在页面中,页面中有一个$someonename,此时,Velocity将把someonename作为变量名,若我们程序是想在someone这个变量的后面紧接着显示name字符,则上面的标签应该改成${someone}name。

"!"用来强制把不存在的变量显示为空白。如:当找不到username的时候,$username返回字符串"$username",而$!username返回空字符串""

Velocity语法使用

一、变量定义

#set($name ="velocity")

等号后面的字符串 Velocity 引擎将重新解析,例如出现以$开始的字符串时,将做变量的替换。

二、变量赋值

#set($hello ="hello $name")

上面的这个等式将会给$hello赋值为"velocity"

三、循环

#foreach($element in $list) 
    <span>$!element</span><br>
#end

Velocity引擎会将list中的值循环赋给element变量

四、条件语句

条件语句的语法如下:

#if(condition)
...
#elseif(condition)
…
#else
…
#end

五、关系操作符

Velocity引擎提供了AND、OR和NOT操作符,分别对应&&、||和!例如:

#if($foo && $bar)
...
#end

六、宏

Velocity中的宏可以理解为函数定义。定义的语法如下:

#macro(macroName arg1 arg2 ...)
...
#end

调用这个宏的语法是:

#macroName(arg1 arg2 ...)

这里的参数之间使用空格隔开,下面是定义和使用Velocity宏的例子:

#macro(sayHello $name)
    hello $name
#end

#sayHello("velocity")

输出的结果为hello velocity

七、#parse 和 #include

#parse和#include指令的功能都是在外部引用文件,而两者的区别是,#parse会将引用的内容当成类似于源码文件,会将内容在引入的地方进行解析,#include 是将引入文件当成资源文件,会将引入内容原封不动地以文本输出。分别看以下例子:

 foo.vm文件:

#set($name = "velocity")

parse.vm:

#parse("foo.vm")

输出结果为:velocity

include.vm:

#include("foo.vm")

输出结果为:#set($name = "velocity")

八、注释

单行注释

##单行注释

多行注释

#*
    多行注释
*#

九、单双引号

单引号不解析引用内容,双引号解析引用内容

#set ($var="hello")

'$var'  ## 结果为:$var
"$var"  ## 结果为:hello

十、属性

通过'.'操作符使用变量内容

$Identifier.Identifier
$user.name

 

本文参考

http://www.ibm.com/developerworks/cn/java/j-lo-velocity1/

http://outofmemory.cn/code-snippet/1623/Velocity-syntax-usage-summary