注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

星期五

明天不上班

 
 
 

日志

 
 
关于我

一个特立独行的Java程序员,比较宅,上上网,写博客,听音乐,看电影。

网易考拉推荐

Velocity使用总结之引用(references)  

2013-02-04 21:25:28|  分类: Java |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
Velocity的作用:
1.Velocity可以被用于从模板(templates)生成web页面,SQL,PostScript和其他之类的输出。
2.也可以作为独立的用于生产源代码,报表或者其他系统的一部分。

VTL(Velocity Templates Language)模板语言
Velocity模版语言有两种类型:引用和指令
所有的引用(rederences)以$开头,用于输出一些东西,指令(Directives)以#开头,用于做一些事。

Example1
#set($a = "Velocity")

Example2
#set($foo = "Velocity")
Hello $foo World!

注解(Comments)
## this is a single line comment

#*
This begins a multi-line comment.
*#

#**
Just like Java doc
*#

引用(references)

变量(Variables)
一个VTL的变量必须以$符号开头,紧接着跟一个VTL标示符,一个VTL标示符(identifer)必须由一下字符组成:
    alphabetic (a .. z, A .. Z)
    numeric (0 .. 9)
    hyphen ("-")
    underscore ("_")
但是必须以字母开头。

Example
#set($foo = "bar")
$foo

属性(properties)
第二种引用的类型是属性,属性有自己独特的格式,也是以$开头,接着是VTL标示符,再接着跟. (dot) 和另一个标示符.

Example
$customer.Address
$purchase.Total

看看第一个例子,$customer.Address. 它有两层含义,第一层含义,你可以将customer理解成一个hashtable,Address是他的key,返回value。
第二层的含义,你可以将Address理解成customer的一个方法,是getAddress()的简短写法。

方法(method)

方法定义在Java Code中,我们可以直接调用VTL标示符的方法。

Example
$customer.getAddress()
$purchase.getTotal()
$page.setTitle("My Home Page")
$person.setAttributes(["a", "b", "c"])

VTL的属性可以被用于一些特定方法的简短表示。
规则:

Property Lookup Rules
For lower-case names such as, $customer.address, the sequence is
getaddress()
getAddress()
get("address")
isAdress()

For started with upper-case names, such as, $customer.Address, the sequence is
getAddress()
getaddress()
get("Address")
isAddress()

Velocity 1.6版本,支持数组和java.util.List

Example
$myarray.isEmpty()
$myarray.size()
$myarray.get(2)
$myarray.set(1, 'test')

1.6版本还支持可变参数的方法,public void setPlanets(String ... plants)

Example
$sun.setPlanets('Earth', 'Mars', 'Neptune')
$sun.setPlanets('Mercury')
$sun.setPlanets() ## Will just pass in an empty, zero-length array

输出结果(Rendering)
所有引用(变量,属性和方法)都会被转为String对象,作为最后结果输出。例如有一个引用$foo,这时Velocity会调用它的的toString()方法。
索引表示法(Index Notation)
Example
$foo[0]       ## $foo takes in an Integer look up $foo[$i]      ## Using another reference as the index    $foo["bar"]   ## Passing a string where $foo may be a Map

The bracketed syntax also works with Java arrays since Velocity wraps arrays in an access object that provides a get(Integer) method which returns the specified element.

The bracketed syntax is valid anywhere .get is valid, for example: 
$foo.bar[1].junk
$foo.callMethod()[1]
$foo["apple"][4]
 A reference can also be set using index notation, for example:

#set($foo[0] = 1)
#set($foo.bar[1] = 3)
#set($map["apple"] = "orange")

下一篇,将进入指令(Directives

参考资料:
  评论这张
 
阅读(654)| 评论(0)
推荐

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017