快速业务通道

使用Velocity实现客户端和服务器端模板 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-16
出了一些例子:

清单 4. 变量类型的 VTL 引用

#set( $this = "Velocity") #set( $numericBase = 999 ) #set( $booleanCondition = true ) This page is generated using $this. There are ($numericBase + 1) pages in total.

变量名必须从一个字母开始,因此 Velocity 很容易把变量名与模板中的货币符号分开(比如, $100 不可能是一个变量名)。合并操作中所有的变量都被转化成字符串,可能造成一些有趣的现象。看一看清单 4 中用红色显示的文本。合并后的输出如清单 5 所示:

清单 5. 合并后的模板中带有数字值的变量

This page is generated using Velocity. There are (999 + 1) pages in total.

因为 $numericBase 在合并操作中被转化成了字符串,因此不会执行算术操作。因为 VTL 专门用于模板操作而非通用的计算语言,所以只需要支持整数算术运算(尽管可以使用插件工具进行扩展)。下面的脚本说明了如何利用这种数学运算能力:

#set( $newSum = $numericBase + 1) There are $newSum pages in total.

该模板合并后相应的输出为:

There are 1000 pages in total.

到目前我们处理的还只有标量。要创建包含多个元素的 ArrayList 变量,可以使用如下的语法:

#set( $treeList = ["pine", "oak", "maple", "redwood"])

您可以使用 $treeList.get(1) 列表中的第二个元素。

赋值以后, $treeList 就是一个基于 ArrayList 的变量(就像是标准 JDK 集合类中那样)。您可以直接使用符号 $treeList.get(n) 访问它的每个元素,其中的 n 是以 0 为基的 ArrayList 索引。比如,像 清单 6 种红色显示的一行所表明的那样, $treeList.get(1) 用于选择 ArrayList 中第二项,即 oak。这种调用 ArrayList 类方法的语法也可用于调用其他变量对象的方法。

使用Velocity实现客户端和服务器端模板(3)

时间:2011-06-27 IBM Sing Li

属性和方法参考

除了在模板中设置变量之外,VTL 引用也可以是对象属性或方法。这些对象是模板可以使用的 Java 类。

对象属性通过和 Javabean 类似的符号访问。比如,可以通过 VTL 引用 $customer.LastName 访问 $customer 对象的 LastName 属性。在幕后,Velocity 使用对象的访问器方法获得属性值(即调用对象的 getLastName() 方法)。

您可以用和属性访问类似的符号调用对象的方法,可以带参数列表也可以不带。比如,可以通过 VTL 引用 $customer.getPhone("mobile") ,调用 $customer 对象的 getPhone() 方法获得移动电话号码。

关于占位符替换的一点说明:Velocity 把任何不能识别的引用作为普通文本打印,如清单 6 中下面突出显示的两行(蓝色和红色)所示:

清单 6. 占位符置换

The second item in the list is $treeList.get(1). $notDeclared is an undeclared variable. But $!notDeclared is invisible when not declared.

VTL 支持一种静态引用符号,以避免呈现不存在的或者 空的 引用。如果使用安静引用符号,比如 $!notDeclared ,那么 Velocity 将什么也不输出,而不是输出完整的引用名。注意变量名前面的“!”表示这是静态引用符号。当合并清单 6 中的模板时,两个引用都没有分配任何值,但是蓝色显示的引用将原样显示,而绿色的一个则看不到:

The second item in the list is oak. $notDeclared is an undeclared variable. But is invisible when not declared.

选择性呈现和循环

可以使用指示符 #if... #then... #else.... 有条件地呈现模板中特定的部分。清单 7 给出了一个例子:

清单 7. 使用 #if、#the

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号