Velocity快速入门教程
velocity快速入门

velocity快速⼊门1.velocity简介 velocity是⼀个基于Java的模板引擎,可以通过特定的语法获取在Java对象的数据,填充到模板中,从⽽实现界⾯和Java代码的分离。
这意味着可以使⽤velocity替代jsp的开发模式了,这使得前端开发⼈员可以和 Java 程序开发⼈员同步开发⼀个遵循 MVC 架构的 web 站点,在实际应⽤中,velocity还可以应⽤于很多其他的场景。
2.应⽤场景web应⽤程序:作为应⽤程序的视图,展⽰数据。
源代码⽣成:velocity可⽤于基于模板⽣成Java源代码。
⾃动电⼦邮件:⽹站注册,认证等的电⼦邮件模板。
⽹页静态化:基于velocity模板,⽣成静态⽹页。
3.velocity组成结构velocity主要分为app、context、runtime和⼀些辅助util⼏个部分app模块:主要封装了⼀些接⼝,暴露给使⽤者使⽤,主要有两个类,分别是Velocity(单例)和VelocityEnginecontext模块:主要封装了模板渲染需要的变量runtime模块:整个velocity的核⼼模块,runtime模块会将加载的模块解析成语法树,velocity调⽤mergeTemplate⽅法时会渲染整棵树,并输出最终的渲染结果runtimeInstance类为整个velocity渲染提供了⼀个单例模式,拿到了这个实例就可以完成渲染过程了4.快速⼊门4.1 需求分析使⽤velocity定义HTML模板,将动态数据填充到模板中,形成⼀个完整的HTML页⾯4.2 步骤分析(1)创建项⽬(2)引⼊依赖(3)定义模板(4)输出html4.3 velocity⼊门程序创建maven项⽬,然后引⼊如下依赖<!--velocity--><dependency><groupId>org.apache.velocity</groupId><artifactId>velocity-engine-core</artifactId><version>2.0</version></dependency>在templates⽬录下新建⼀个模板⽂件 demo1.vm,内容如下:<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>Title</title></head><body>hello,${name}!</body></html>编写测试类,使⽤velocity⽣成html⽂件@Testpublic void test1() throws IOException {// 1.设置velocity的资源加载器Properties properties=new Properties();properties.put("file.resource.loader.class","org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader");// 2.初始化velocity引擎Velocity.init(properties);// 3.创建velocity容器VelocityContext context=new VelocityContext();context.put("name","张三");// 4.加载模板⽂件Template template = Velocity.getTemplate("templates\\demo1.vm", "utf-8");// 5.合并数据到模板FileWriter fw=new FileWriter("D:\\idea_code\\cat-movie-main\\cat-movie-main\\movie-server\\src\\main\\resources\\static\\demo1.html");template.merge(context,fw);// 6.释放资源fw.close();}执⾏单元测试,就可以看到static⽬录下⽣成了demo1.html,并且数据显⽰<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>Title</title></head><body>hello,张三!</body></html>5.基础语法5.1 VTL介绍Velocity Template Language(VTL),是velocity中提供的⼀种模板语⾔,旨在提供最简单和最⼲净的⽅法来将动态内容合并到⽹页中,简单来说VTL可以将程序的动态数展⽰到⽹页中。
Velocity快速指南

在以上示例中我们引用变量时,使用“$”符紧接变量名,如$foo,除此之外还有一种正式的引 用方法,如下所示: ${foo} ${customer.Address} ${customer.getAddress()} 对于一般的使用,之前的章节所讲述的方法是完全够用的,但有些特殊情况我们必须使用本节 所讲的正式引用法。例如,我们引用一个变量$vice,对于如下语句: Jack is a $vicemaniac. $vice 不能够正常解析,因为“vice”和文本“maniac”紧挨着,造成变量名被解析成$vicemaniac。 正确的写法,是使用正式引用法: Jack is a ${vice}maniac. 这样就可以区分特殊情况下的变量名和普通文本。
例如,当我们写”Give me $9999 please!”这句话时不会出现什么问题,因为 VTL 标识符总是以字母 开头,所以$9999 不会被误解为变量引用,但当普通文本和现有变量引用存在冲突的时候,我 们可以使用右斜杠“\”转义。例如,
#set( $email = “foo” ) $email
变量
VTL 的命名规则很简单,第一个字符必须是字母(a..z 或 A..Z),其他的部分限于以下类型:
字母(a..z, A..Z)
数字(0..9)
减号(“-“)
下划线(“_”)
以下是标识符合法的变量:
$foo
$bosnMa
$bosn-ma
$bosn_ma
$bosnMa1
变量既可以通过 set 指令赋值(FE),也可以通过 Java 代码赋值(RD)。例如,如果一个 Java 变量$foo 的值为”abc”,当模板被请求时,所有页面上的$foo 都将被赋值”abc”。
velocity用法简单实例说明

velocity用法简单实例说明文章来源:/renxianzuo/archive/2009/08/18/4457381.aspx不少人看过或了解过Velocity,名称字面翻译为:速度、速率、迅速,用在Web开发里,用过的人可能不多,大都基本知道和在使用Struts,到底Velocity和Struts是如何联系,怎么看待Velocity呢?让我们来尝试一下,了解Velocity的概念,通过在这里的介绍,强调在技术选择上的问题,让大家在选择项目开发时,可以考虑Velocity,另外也让大家了解它的思想,毕竟它提供了一个很好的思维方式,给大家换换筋骨,换一种思考的方式。
本文基于你对Java开发有一定基础,知道MVC,Struts等开发模式。
Velocity是一种Java模版引擎技术,该项目由Apache提出,由另外一种引擎技术Webmacro引深而来。
那什么是官方的Velocity定义呢?Apache对它的定义是:一种基于Java的模板引擎,但允许任何人使用简单而强大的模板语言来引用定义在Java代码中的对象。
目前最新的版本是1.4,可以在/velocity/index.html查找更多信息。
其实说白了Velocity也就是MVC架构的一种实现,但它更多的是关注在Model和View之间,作为它们的桥梁。
对于MVC的最流行架构Struts来说,相信大家都不陌生,很多开发人员已经大量在使用Struts 架构,包括IBM的Websphere5以上的管理平台版本,Struts技术很好的实践了MVC,它有效的减少Java代码在View(Jsp)中的出现,但在Model和View之间还是依靠Struts的Taglib技术来实现,试想如果前台开发的网页设计师对Struts乃至Taglib不熟(相信也挺难熟的,包括后期的维护人员也一样),将会对网页设计师和前台开发工程师的相互协作开发带来很大的难度,现实开发中也还是存在这样事实,网页设计师和前台开发之间的工作或多或少还是存在一定的耦合,怎样最大限度的解决这个难题呢?还是让我们来看看Velocity或者说这个概念吧。
velocity入门使用教程

velocity入门使用教程V elocity入门使用教程一、使用velocity的好处:1.不用像jsp那样编译成servlet(.Class)文件,直接装载后就可以运行了,装载的过程在web.xml里面配置。
【后缀名为.vhtml是我们自己的命名方式。
也只有在这里配置了哪种类型的文件,那么这种类型的文件才能解析velocity语法】2.web页面上可以很方便的调用java后台的方法,不管方法是静态的还是非静态的。
只需要在toolbox.xml里面把类配置进去就可以咯。
【调用的方法$class.method()】即可。
3.可以使用模版生成静态文档html【特殊情况下才用】二、使用1、下载velocity-1.7.zip 、velocity-tools-2.0.zip2、解压后引用3个jar文件velocity-1.7.jar、velocity-tools-2.0.jar、velocity-tools-view-2.0.jar 还有几个commons-…..jar 开头的jar包三、配置文件:Web.xml<="" bdsfid="75" p="" xmlns:xsi="/doc/0310614676.html,/2001/XMLS chema-instance">xmlns="/doc/0310614676.html,/xml/ns/jav aee"xmlns:web="/doc/0310614676.html,/xml/n s/javaee/web-app_2_5.xsd"xsi:schemaLocation="/doc/0310614676.ht ml,/xml/ns/javaee/doc/0310614676.html,/xml/ns/javaee/web -app_2_5.xsd"version="2.5">velocityorg.apache.velocity.tools.view.VelocityViewServlet1velocity*.vmvelocity*.jspvelocity*.htmlToolbox.xml 【这个文件和web.xml放在一起,不要改名字,否则不会自动加载】...<tool< bdsfid="160" p=""></tool<>class="/doc/0310614676.html,parisonDate Tool"/>四、页面使用(html)"/doc/0310614676.html,/TR/html4/loose.dt d"><="" action="tree/tree!add.action" bdsfid="195" id="form1" name="form1" p="">method="post">序号:bdsfid="239" id="treeproduKey" maxlength="3" name="treeproduKey" onkeydown="keySel(event);" p="" type="text"/>value=$!{request.produKey_3}><font< bdsfid="242" p=""></font<> color="red"size="2px">*序列号请输入三位数字名字:1-50个字母、数字或者汉字’所属类别:#foreach($list in#if(!$/doc/0310614676.html,)<="" bdsfid="265" class="easyui-linkbutton" p="" plain="false"><="" bdsfid="267" class="easyui-linkbutton" p=""plain="false">iconCls="icon-save"href="#this"onclick="checkForm();">确认添加 #else<="" bdsfid="269" class="easyui-linkbutton" p="" plain="false"><="" bdsfid="271" class="easyui-linkbutton" p=""plain="false">iconCls="icon-save"href="#this"onclick="checkForm();">确认更新 #end。
Velocity模板学习(一)

Velocity模板学习(⼀)⼀、Velocity是什么Velocity是⼀个基于Java的模板引擎,允许任何⼈仅仅简单地使⽤模板语⾔就可以引⽤由Java代码编写的对象。
⼆、Velocity的基本语法1.变量变量的定义在Velocity中,变量的类型是弱类型的。
#set($name = 'xiaoqian');当⽤#set指令的时候,#set命令后⾯的括号中的字⾯字符串将被解析和重新解释。
#set($begin = 'www');#set($end = 'index.vm');#set($all = "$begin/$end");$all的值为www/index.vm变量规范的写法${name},也可以写成$name,提倡前⾯⼀种写法。
tom is a last $nameline;//这种情况下Velocity不能识别出您到底要使⽤什么变量tom is a last ${name}line;//⽤{}括起来就⽐较清晰但是在引⽤属性的时候不要加{}变量的赋值赋值的变量左边必须是⼀个变量或者属性引⽤,右边可以是下⾯6种值之⼀。
变量引⽤,字⾯字符串,属性引⽤,⽅法引⽤,字⾯数字,数组列表#set($aa = $bb);#set($aa.c = 'tomcat');注意:(1)如果上⾯例⼦的右边值为null,那么左值不会被赋值,会保留原来的值。
(2)Velocity模板中未被定义的变量将被认为是⼀个字符串(3)Velocity模板不会将reference解释成对象的实例变量2.循环#foreach ($element in $list)$VelocityCountThis is $element#end//举例#set($list = ['apple','pear','pink']);#foreach ($element in $list)$VelocityCountThis is $element上⾯例⼦输出的是1 This is apple2 This is pear3 This is pink3.条件语句#if(condition)#elseif(condition)#else#end4.语句的嵌套#foreach ($element in $list)#inner foreach5.将不存在的变量或者变量的值为null强制显⽰为空⽩$!name或者$!{name}因为如果不在前⾯加上!,那么在变量不存在或者变量值为null的时候,就直接会显⽰原来的字符举例:$name,当name不存在的话,就直接会显⽰$name,如果加上!的话,就会显⽰空⽩,这样才⽐较合理。
java模板引擎velocity 方法

java模板引擎velocity 方法【实用版4篇】目录(篇1)1.Java 模板引擎 Velocity 简介2.Velocity 的使用方法3.Velocity 的基本语法4.Velocity 的优点与局限性正文(篇1)一、Java 模板引擎 Velocity 简介Java 模板引擎 Velocity 是一款基于 Java 的模板引擎,它可以帮助开发者简化代码编写,提高工作效率。
Velocity 允许用户将输出结果与数据分离,通过定义模板和提供数据,可以生成各种格式的文档。
它具有很强的扩展性,可以轻松地与其他 Java 框架集成。
二、Velocity 的使用方法1.添加 Velocity 依赖在项目中使用 Velocity,首先需要将 Velocity 的依赖添加到项目中。
对于 Maven 项目,可以在 pom.xml 文件中添加以下依赖:```xml<dependency><groupId>org.apache.velocity</groupId><artifactId>velocity</artifactId><version>2.0</version></dependency>```2.创建 Velocity 配置在项目中创建一个 Velocity 配置类,用于配置 Velocity 的属性。
例如:```javaimport org.apache.velocity.app.Velocity;import org.apache.velocity.context.Context;import org.apache.velocity.runtime.RuntimeConstants;import org.apache.velocity.runtime.RuntimeServices;public class VelocityConfig {public static Velocity getVelocityInstance() {Velocity velocity = new Velocity();velocity.setProperty(RuntimeConstants.RUNTIME_LOG_LEVEL, "WARN");velocity.setProperty(RuntimeConstants.RUNTIME_LOG_PATH,"/tmp/velocity.log");velocity.setProperty(RuntimeConstants.RUNTIME_DIRECTIVE_LOG_LEV EL, "WARN");velocity.setProperty(RuntimeConstants.RUNTIME_DIRECTIVE_LOG_PAT H, "/tmp/directive.log");velocity.setProperty(RuntimeConstants.RUNTIME_CHAIN_LOG_LEVEL, "WARN");velocity.setProperty(RuntimeConstants.RUNTIME_CHAIN_LOG_PATH, "/tmp/chain.log");velocity.setProperty(RuntimeConstants.RUNTIME_TEMPLATE_LOG_LEVE L, "WARN");velocity.setProperty(RuntimeConstants.RUNTIME_TEMPLATE_LOG_PATH, "/tmp/template.log");velocity.setProperty(RuntimeConstants.RUNTIME_STATIC_LOG_LEVEL, "WARN");velocity.setProperty(RuntimeConstants.RUNTIME_STATIC_LOG_PATH, "/tmp/static.log");velocity.setProperty(RuntimeConstants.RUNTIME_FILE_LOG_LEVEL, "WARN");velocity.setProperty(RuntimeConstants.RUNTIME_FILE_LOG_PATH,"/tmp/file.log");velocity.setProperty(RuntimeConstants.RUNTIME_LOG_IGNORE_CASE, "true");velocity.setProperty(RuntimeConstants.RUNTIME_LOG_ENABLED, "true");velocity.setProperty(RuntimeConstants.RUNTIME_DIRECTIVE_ENABLED, "true");velocity.setProperty(RuntimeConstants.RUNTIME_TEMPLATE_ENGINE_E NABLED, "true");velocity.setProperty(RuntimeConstants.RUNTIME_STATIC_ENGINE_ENA BLED, "true");velocity.setProperty(RuntimeConstants.RUNTIME_FILE_ENGINE_ENABL ED, "true");return velocity;}}```3.创建 Velocity 模板在项目中创建一个 Velocity 模板文件,例如:test.vm。
java模板引擎velocity 方法

一、什么是Java模板引擎Velocity?Java模板引擎Velocity是一种用于动态生成文本的工具,它能够通过预定义的模板和数据生成所需的文本。
它是Apache软件基金会的一个开源项目,因其灵活性和高效性而得到了广泛的应用。
二、Velocity的基本用法1. 引入Velocity库要使用Velocity,首先需要在项目中引入Velocity库。
可以通过Maven或手动下载并导入jar包的方式将Velocity集成到项目中。
2. 创建模板文件在使用Velocity时,需要预先创建模板文件,模板文件中可以包含一些占位符和逻辑控制代码,用来指示Velocity填充内容或执行相应的逻辑。
3. 创建模板上下文在Java代码中,需要创建一个模板上下文对象,该对象用于存储模板中需要填充的数据。
4. 渲染模板通过Velocity引擎的渲染方法,将模板文件和模板上下文传入,即可生成最终的文本内容。
五、Velocity的高级用法1. 模板继承Velocity支持模板继承的功能,可以在模板中定义块,然后在子模板中重写这些块的内容。
2. 自定义指令Velocity允许用户自定义指令,以满足特定的需求。
通过编写自定义指令的代码,可以扩展Velocity的功能。
3. 工具类集成Velocity本身并不包含太多实用的工具类,但它可以和一些常用的工具类集成,比如Apache Commons和Guava等,以提高模板中逻辑控制的灵活性和便利性。
六、Velocity的优缺点1. 优点(1)简单易学:Velocity的语法简单易懂,很容易上手。
(2)高效灵活:Velocity能够高效地生成文本,并且支持高度的灵活定制。
(3)可扩展性强:Velocity支持自定义指令,可以满足各种复杂的需求。
2. 缺点(1)性能一般:相比一些新的模板引擎,Velocity的性能并不算太突出。
(2)社区活跃度不高:作为一个老牌的模板引擎,Velocity的社区活跃度已经不如以前,新功能和bug修复相对较慢。
unity中velocity用法

unity中velocity用法Unity中的velocity用法Velocity是Unity中一个非常重要的属性,它可以用于控制物体在三维空间中的运动速度和方向。
在游戏开发中,我们经常需要使用velocity来实现各种物体的运动效果,比如玩家角色的移动、敌人的追逐等。
在本文中,我们将一步一步地回答关于Unity中velocity的用法和使用技巧。
一、Velocity的基本概念在物理学中,Velocity(速度)是一个矢量量,表示物体在单位时间内的位移。
在Unity中,Velocity也是一个矢量量,它用来表示物体在三维空间中的运动速度和方向。
在Rigidbody组件中,velocity属性可以用来直接修改物体的速度和方向。
Velocity是一个三维向量,可以通过Vector3类型来表示。
在Unity中,我们可以使用Vector3的各种方法和属性来控制和操作velocity。
二、Velocity的基本使用方法要使用velocity控制物体的运动,首先需要在物体上添加Rigidbody组件。
Rigidbody是一个物理组件,可以用来实现物体的真实运动效果。
在Rigidbody组件中,有一个velocity属性,用于控制物体的速度。
csharppublic Rigidbody rb;void Start(){rb = GetComponent<Rigidbody>();}void Update(){rb.velocity = new Vector3(2, 0, 0); 将物体的速度设置为(2, 0, 0) }在上面的例子中,我们首先在Start方法中获取物体上的Rigidbody组件,然后在Update方法中通过设置rb.velocity属性,将物体的速度设置为(2, 0, 0)。
这样物体就会以每秒2个单位长度的速度,向x轴正方向移动。
需要注意的是,物体的速度是以每秒钟移动的距离来表示的。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Velocity快速入门教程1.变量(1)变量的定义:#set($name = "hello") 说明:velocity中变量是弱类型的。
当使用#set 指令时,括在双引号中的字面字符串将解析和重新解释,如下所示:#set($directoryRoot = "www" )#set($templateName = "index.vm" )#set($template = "$directoryRoot/$templateName" )$template输出将会是:www/index.vm注:在velocity中使用$2.5这样的货币标识是没有问题得的,因为velocity中的变量总是以一个大写或者小写的字母开始的。
(2)变量规范的写法${name} ,也可以写成:$name。
提倡用前面的写法。
例如:你希望通过一个变量$vice来动态的组织一个字符串。
Jack is a $vicemaniac.本来变量是$vice现在却变成了$vicemaniac,这样Veloctiy就不知道您到底要什么了。
所以,应该使用规范的格式书写: Jack is a ${vice}maniac现在Velocity知道变量是$vice而不是$vicemaniac。
注意:当引用属性的时候不能加{}(3)变量的赋值:$name="hello"赋值的左边必须是一个变量或者是属性引用。
右边可以是下面六种类型之一:变量引用,字面字符串,属性引用,方法引用,字面数字,数组列表。
下面的例子演示了上述的每种类型:#set( $monkey = $bill ) ## variable reference#set( $monkey.Friend = "monica" ) ## string#set( $monkey.Blame = $whitehouse.Leak ) ## property reference#set( $monkey.Plan = $spindoctor.weave($web) ) ## method reference#set( $monkey.Number = 123 ) ##number#set( $monkey.Say = ["Not", $my, "fault"] ) ## ArrayList注意:①如果上述例子中的右值是null, 则左值不会被赋值,也就是说会保留以前的值。
②velocity模板中未被定义的变量将被认为是一个字符串。
例如:#set($foo = "gibbous")$moon = $foo输出结果为:$moon = gibbous③velocity模板中不会将reference解释为对象的实例变量。
例如:$将被解释为Foo对象的getName()方法,而不是Foo对象的Name实例变量。
例如:$foo.getBar() 等同于$foo.Bar ;$data.getUser("jon") 等同于$er("jon") ;data.getRequest().getServerName() 等同于$data.Request.ServerName等同于${data.Request.ServerName}2.循环#foreach ($element in $list)This is $element.$velocityCount#end例子:#set( $list = ["pine", "oak", "maple"])#foreach ($element in $list)$velocityCountThis is $element.<br>#end输出的结果为:1 This is pine.2 This is oak.3 This is maple.每次循环$list中的一个值都会赋给$element变量。
$list可以是一个Vector、Hashtable或者Array。
分配给$element的值是一个java 对象,并且可以通过变量被引用。
例如:如果$element t是一个java的Product类,并且这个产品的名字可以通过调用他的getName()方法得到。
#foreach ( $key in $list.keySet())Key: $key -> Value: $list.get($key) <br>#end提示:velocity中大小写敏感。
Velocity还特别提供了得到循环次数的方法,$velocityCount变量的名字是Velocity 默认的名字。
例子:First example:#foreach ( $foo in [1..5] )$foo#endSecond example:#foreach ( $bar in [2..-2] )$bar#endThird example:#set ( $arr = [0..1] )#foreach ( $i in $arr )$i#end上面三个例子的输出结果为:First example:1 2 3 4 5Second example:2 1 0 -1 -2Third example:0 13.条件语句#if (condition)#elseif (condition)#else#end4.语句的嵌套#foreach ($element in $list)## inner foreach 内循环#foreach ($element in $list)This is $element. $velocityCount <br>inner<br> #end## inner foreach 内循环结束## outer foreachThis is $element.$velocityCount <br>outer<br>#end语句中也可以嵌套其他的语句,如#if…#else…#end等。
5.注释(1)单行注释:## This is a single line comment.(2)多行注释:#*Thus begins a multi-line comment. Online visitors won’t see this text because the Velocity Templating Engine will ignore it.*#(3)文档格式:#**This is a VTL comment block andmay be used to store such informationas the document author and versioninginformation:@version 1.1@author xiao*#6.关系和逻辑操作符Velocity 也具有逻辑AND, OR 和 NOT 操作符。
如## example for AND#if($foo && $bar)<strong> This AND that</strong>#end例子中#if() 指令仅在$foo 和$bar 都为真的时候才为真。
如果$foo 为假,则表达式也为假;并且 $bar将不被求值。
如果 $foo 为真,Velocity 模板引擎将继续检查$bar 的值,如果 $bar 为真,则整个表达式为真。
并且输出This AND that。
如果 $bar 为假,将没有输出因为整个表达式为假。
7.Velocity 中的宏Velocity中的宏我们可以理解为函数。
①宏的定义#macro(宏的名称 $参数1 $参数2 …)语句体(即函数体)#end②宏的调用#宏的名称($参数1 $参数2 …)说明:参数之间用空格隔开。
8.#stop停止执行模板引擎并返回,把它应用于debug是很有帮助的。
9.#include与#parse#include和#parse的作用都是引入本地文件, 为了安全的原因,被引入的本地文件只能在TEMPLATE_ROOT目录下。
区别:(1) 与#include不同的是,#parse只能指定单个对象。
而#include可以有多个如果您需要引入多个文件,可以用逗号分隔就行:#include ("one.gif", "two.txt", "three.htm" )在括号内可以是文件名,但是更多的时候是使用变量的:#include ( “greetings.txt”, $seasonalstock )(2) #include被引入文件的内容将不会通过模板引擎解析;而#parse引入的文件内容Velocity将解析其中的velocity语法并移交给模板,意思就是说相当与把引入的文件copy到文件中。
#parse是可以递归调用的,例如:如果dofoo.vm包含如下行:Count down.<br>#set ($count = 8)#parse ("parsefoo.vm")<br>All done with dofoo.vm!那么在parsefoo.vm模板中,你可以包含如下VTL:velocity tag laugane$count#set($count = $count - 1)#if ( $count > 0 )<br>#parse( "parsefoo.vm" )#else<br>All done with parsefoo.vm!#end的显示结果为:Count down.87654321All done with parsefoo.vm!All done with dofoo.vm!注意:在vm中使用#parse来嵌套另外一个vm时的变量共享问题。
如:->a.vm 里嵌套 b.vm;->a.vm 里定义了变量 $param;->b.vm 里可以直接使用$param,无任何限制。
但需要特别注意的是,如果b.vm里同时定义有变量$param,则b.vm里将使用b.vm里定义的值。
10.转义字符'\'的使用如果reference被定义,两个’\’意味着输出一个’\’,如果未被定义,刚按原样输出。
如:#set($email = "foo" )$email\$email\\$email\\\$email输出:foo$email\foo\$email如果$email 未定义$email\$email\\$email\\\$email输出:$email\$email\\$email\\$email (前面三个斜线,这里两个)11.内置对象Velocity内置了一些对象,在vm模版里可以直接调用,列举如下:$request、$response、$session,另外,模板内还可以使用 $msg内的消息工具访问 Struts 的国际化资源,达到简便实现国际化的方法。