快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-16
n 和 #else 有选择地呈现

#if $customer.GoldMember   Thank you Mr. $customer.LastName, for flying with us.   Your loyal patronage is greatly appreciated.   This flight earns you an additional 5000 miles. #else   Thank you for flying with us.   Please consider joining our frequent flyer program. #endif

在清单 7 的模板中,使用 $customer 对象的 boolean 属性 GoldMember 确定在最终输出中出现哪些信息。对于金牌顾客,最终输出中将呈现蓝色显示的消息;对于其他顾客,则在最终输出中呈现绿色显示的消息。

模板中经常要使用循环格式化表格或者列表形式的信息。显示的数据通常保存在一个 ArrayList 引用中。在 Velocity 中唯一用于处理重复循环的指示符是 #foreach 指示符。清单 8 中的模板通过 $treeList ArrayList 变量演示了 #foreach 指示符的用法。当然,也可以使用任何其他可用的集合类型的对象引用,或者返回一个集合的对象属性/方法引用。

清单 8. 使用 #foreach 循环

<table> <tr><td>Tree Name</td></tr> #foreach $name in $treeList <tr><td>     $name is a big tree! </td></tr> #end </table>

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

时间:2011-06-27 IBM Sing Li

$treeList 中包含树名的列表,清单 8 中的模板合并后的输出如清单 9 所示:

清单 9. #foreach 循环中合并后的输出

<table> <tr><td>Tree Name</td></tr> <tr><td>     pine is a big tree! </td></tr> <tr><td>     oak is a big tree! </td></tr> <tr><td>     maple is a big tree! </td></tr> <tr><td>     redwood is a big tree! </td></tr> </table>

如果从 HTML 浏览器中查看,清单 9 当然就是一个包含树名的表。

注意在 #foreach 循环体内有一个内置的计数器,可以在 #foreach 指示符循环体内通过 $velocityCounter 引用访问它。默认情况下,这个计数器从 1 开始,每执行一次循环递增一次。

Velocity 中的宏

Velocity 的一个主要特性是能够很容易地定义宏,称为 Velocimacros。宏使您能够很容易地封装和重用模板脚本。默认情况下,宏保存在 VM_global_library.vm 文件中。比如,考虑清单 10 中名为 #showTree() 的 Velocimacro:

清单 10. 定义 Velocimacro

#macro (showTree)    #if ($treeList )      #foreach ($e in $treeList )        $e      #end    #end #end

您可以调用 #showTree() Velocimacro 并使用它打印 $treeList ArrayList ―― 如果这个列表已经定义的话。调用的语法很简单,即 #showTree() 。

参数化宏也是可能的。比如,我们可以修改 #showTree() 宏使其用于任何列表,如清单 11 所示:

清单 11. 带参数的 Velocimacro

#macro (showList $val)    #if ($val )      #foreach ($e in $val )        $e      #end    #end #end

要使用清单 11 中的宏调用 $treeList ,我们可以使用 #showList($treeList) 。这两种情况的输出都一样,如清单 12 所示:

清单 12. Velocimacro 的合并输出

pine     oak      maple     redwood

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

时间:2011-06-27 IBM Sing Li

其他有趣的 VTL 细节

单行注释或者行尾注释从 ## 开始,多行注释则放在 #* 和 *# 之间。

在处理字符串数据时,可以

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号