Velocity简明教程1

合集下载

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可以将程序的动态数展⽰到⽹页中。

java模板引擎velocity 方法

java模板引擎velocity 方法

java模板引擎velocity 方法(原创版3篇)目录(篇1)1.Java 模板引擎 Velocity 简介2.Velocity 的使用方法3.Velocity 的优点和局限性正文(篇1)【Java 模板引擎 Velocity 简介】Java 模板引擎 Velocity 是一种基于 Java 的模板引擎,它可以使用简单的模板语法来生成动态的 HTML、XML、JavaScript、CSS 等文件。

Velocity 可以很好地与 Java 集成,使得开发人员可以方便地使用模板来生成各种类型的文档。

【Velocity 的使用方法】要使用 Velocity,首先需要下载并添加 Velocity 的依赖库到项目中。

然后,可以按照以下步骤来使用 Velocity:1.创建一个 Velocity 配置文件(如:velocity.properties),在该文件中可以配置 Velocity 的一些参数,如:输出目录、编码方式等。

2.创建一个模板文件(如:template.vm),在该文件中编写 Velocity 模板语法,并使用特殊的变量(如:${variable})来表示需要替换的实际值。

3.编写一个 Java 程序,使用 Velocity 的 API 来读取模板文件,并将实际值传递给模板,生成最终的输出文件。

以下是一个简单的 Velocity 使用方法示例:```javaimport java.io.File;import java.io.IOException;import java.util.HashMap;import java.util.Map;import org.apache.velocity.Template;import org.apache.velocity.TemplateException;import org.apache.velocity.VelocityContext;import org.apache.velocity.app.Velocity;public class VelocityDemo {public static void main(String[] args) {// 创建 Velocity 配置Velocity.setPropertyFile("velocity.properties"); // 创建 Velocity 上下文VelocityContext context = new VelocityContext(); // 设置模板文件路径String templatePath = "template.vm";// 设置需要替换的实际值Map<String, Object> variables = new HashMap<>(); variables.put("name", "张三");variables.put("age", 20);// 渲染模板try {Template template =Velocity.getTemplate(templatePath);String result = template.render(context, variables);File outputFile = new File("output.html");outputFile.getParentFile().mkdirs();outputFile.createNewFile();outputFile.write(result);} catch (IOException | TemplateException e) {e.printStackTrace();}}}```【Velocity 的优点和局限性】Velocity 的优点包括:1.易于学习和使用:Velocity 的语法简单,开发人员可以快速掌握并应用到项目中。

Velocity用户指南(中文版)(1)

Velocity用户指南(中文版)(1)

Velocity用户指南(中文版)(1)
作者:/chenyun2000/archive/2004/07/08/3676 0.aspx
什么是Velocity?
Velocity是基于Java的模板引擎。

它允许Web页面开发者引用Java代码中定义的方法。

Web设计者可以和Java程序开发者并行开发遵循MVC模式的Web站点。

这意味着,Web设计者可以将精力放在好的Web站点设计上,而Java程序开发者可以将精力放在编写代码上。

Velocity将Java代码从Web页面中分离,使Web站点更具长期可维护性,并提供了一种替代JSP或PHP的方案。

VTL(Velocity Template Language)介绍
VTL提供一种简单、容易和干静的方法将动态内容合并到Web页面。

VTL使用引用(references)将动态内容插入到Web页面中。

变量是一种引用,可以指向Java代码中的定义内容,或者由Web页面中的VTL语句来获得值。

下面是一个可以插入到HTML文档的VTL语句的例子:
VTL语句以#开头,并包含指令(set)。

变量以$开头,用引号引起。

引号可以是单引号,也可以是双引号。

前者引用具体的String值;后者可以包含Velocity引用,例如”hello, $name”,$name会用其当前的值替换。

上面的例子是将值Velocity赋值给变量a。

当变量被赋值后,就可以在HTML文档的任何地方引用,下面是Hello Velocity World!的例子:
注释
VTL支持单行注释(以##开始)和多行注释(包括在#*和*#之间),下面是一个例子:。

velocity用法简单实例说明

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或者说这个概念吧。

java模板引擎velocity 方法

java模板引擎velocity 方法

java模板引擎velocity 方法Velocity是一种基于Java的模板引擎,它以其强大灵活的功能在Java开发中被广泛应用。

本文将介绍Velocity模板引擎的方法,包括模板语法、变量引用、条件判断、循环控制以及自定义指令。

模板语法:Velocity模板使用简洁而灵活的语法,允许将静态的模板与动态的数据结合,生成最终的输出。

1. 变量引用:在Velocity模板中,可以通过使用`${}`语法来引用变量。

变量可以是一般的Java对象或者是Velocity上下文中设置的变量。

2. 简单示例:以下是一个简单的Velocity模板示例,展示了如何引用变量:```<html><head><title>${title}</title></head><body><h1>Welcome, ${name}!</h1></body></html>在这个示例中,`${title}`和`${name}`分别引用了两个变量,通过将这些变量与具体的值进行绑定,可以生成最终的HTML输出。

3. 条件判断:Velocity模板引擎也支持简单的条件判断,可以根据条件的真假来控制模板输出的内容。

下面是一个条件判断的示例,展示了如何根据布尔值来判断是否输出某些文本:```#if($showWelcome)<h1>Welcome!</h1>#else<h1>Goodbye!</h1>#end```在这个示例中,如果变量`showWelcome`为真,将输出`<h1>Welcome!</h1>`,否则将输出`<h1>Goodbye!</h1>`。

4. 循环控制:Velocity模板引擎也支持循环控制,可以通过`#foreach`语法来遍历集合或者数组的元素。

velocity2.0 入门 变量 方法

velocity2.0 入门 变量 方法

1. 什么是velocity2.0?velocity2.0是一个模板引擎,用于在Web开发中,特别是在Java Web开发中,用于生成HTML、XML等静态文件。

velocity2.0可以将模板文件中的变量替换为具体的数值,也可以执行一些简单的逻辑操作,比如条件判断、循环等。

它的主要作用就是将模板和数据整合在一起,生成最终的文件输出。

2. velocity2.0的入门指南想要学习和使用velocity2.0,首先需要了解它的基本语法和用法。

下面是velocity2.0入门的一些基本概念和内容。

3. 变量在velocity2.0中,变量用来表示一些数值、字符串或者对象,在模板中可以通过变量名来引用这些值。

变量的命名规则和作用域和Java中的情况很类似,这些都是需要在学习velocity2.0时需要注意的地方。

4. 变量定义与赋值在velocity2.0模板中,可以通过#set指令来定义和赋值一个变量,比如:```#set($name = "velocity2.0")```这样就定义了一个名为name的变量,并赋值为"velocity2.0"。

5. 变量的引用定义了变量之后,就可以在模板中引用这个变量了。

比如:```Wee to $name!```这样就会在生成的文件中,将$name替换为具体的数值,也就是"velocity2.0"。

6. 变量的作用域velocity2.0中的变量和作用域和Java中的类似,有全局变量和局部变量之分。

全局变量是在整个模板中都可以访问的,而局部变量只在某个指令块中可以访问。

7. 方法除了变量之外,方法也是velocity2.0中比较重要的概念。

在模板中,可以通过方法来执行一些逻辑操作,比如字符串的拼接、条件判断、循环等。

8. 方法的定义与调用在velocity2.0模板中,可以通过#macro指令来定义一个方法,然后通过#call指令来调用这个方法。

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是什么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,如果加上!的话,就会显⽰空⽩,这样才⽐较合理。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、简介Velocity是一个基于java的模板引擎(template engine)。

它允许任何人仅仅简单的使用模板语言(template language)来引用由java代码定义的对象。

当Velocity应用于web开发时,界面设计人员可以和java程序开发人员同步开发一个遵循MVC架构的web站点,也就是说,页面设计人员可以只关注页面的显示效果,而由java程序开发人员关注业务逻辑编码。

Velocity将java代码从web页面中分离出来,这样为web站点的长期维护提供了便利,同时也为我们在JSP和PHP之外又提供了一种可选的方案。

Velocity的能力远不止web站点开发这个领域,例如,它可以从模板(template)产生SQL和PostScript、XML,它也可以被当作一个独立工具来产生源代码和报告,或者作为其他系统的集成组件使用。

Velocity 也可以为Turbine web开发架构提供模板服务(template service)。

Velocity+Turbine提供一个模板服务的方式允许一个web应用以一个真正的MVC模型进行开发。

二、基本语法1 总括1.1 "#"用来标识Velocity 的脚本语句,包括#set、#if 、#else、#end、#foreach、#end、#iinclude、#parse、1.3 "{}"用来明确标识Velocity 变量。

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

1.4 "!"用来强制把不存在的变量显示为空白。

如当页面中包含$msg,如果msg 对象有值,将显示msg 的值,如果不存在msg 对象同,则在页面中将显示$msg 字符。

这是我们不希望的,为了把不存在的变量或变量值为null 的对象显示为空白,则只需要在变量名前加一个“!”号即可。

如:$!msgd1 变量1.1 变量的定义Veloctiy是一种弱类型的语言,语法结构非常简单,但在jetspeed却非常实用。

因为是一种弱类型语言,所以不用定义变量的类型,编译器根据赋值的类型自动进行判断,定义的关键字为set,set前要加#,变量名前必须加$,第一个字符必须为字母。

变量可以包含的字符有以下内容:alphabetic (a .. z, A .. Z),numeric (0 .. 9),hyphen ("-"),underscore ("_")。

当使用#set指令时,括在双引号中的字面字符串(string literal)将解析和重新解释,但是,当string literal 被封装在单引号内时,它将不被解析。

上面这个特性可以通过修改velocity.properties文件的stringliterals.interpolate = false的值来改变上面的特性是否有效。

注:在velocity 中使用$2.5这样的货币标识是没有问题得的,因为velocity 中的变量总是以 "$" 开头,第一个字符必须为字母。

1.2 变量规范的写法(正式格式)${name},也可以写成:$name 。

提倡用前面的写法。

例如:你希望通过一个变量$vice 来动态的组织规范的格式书写 : Jack is a ${vice}maniac现在Velocity 知道变量是$vice 而不是$vicemaniac 。

注意:当引用属性的时候不能加{}$与$!的区别:当找不到username 的时候,$username 返回字符串"$username",而$!username 返回空字符串""。

双引号与引号:1.3 变量的赋值变量名和值的组合要放在小括号中,不必用分号结束语句。

例如: 赋值的左边必须是一个变量或者是属性引用。

右边可以是下面六种类型之一:变量引用,字面字符串,属性引用,方法引用,字面数字,数组列表。

支技持算术运算符。

下面的例子演示了上述的每种类型: 注意:①如果上述例子中的右值是null, 则左值不会被赋值,也就是说会保留以前的值。

在下面的例子中,左边的程序将不能智能的根据$result 的值决定查询是否成功。

在$result 被#set 后(added to the context ),它不能被设置回null (removed from the context )。

打印的结果将显示两次查询结果都成功了,但是实际上有一个查询是失败的。

为了解决以上问题可以通过预先定义的方式,如右边程序:2 属性$customer.Address$hashtable user中的name值。

类似:user.get("name")$customer.Address有两种含义。

它可以表示:查找hashtable对象customer中以Address为关键字的值;也可以表示调用customer对象的getAddress()方法。

当你的页面被请求时,Velocity将确定以上两种方式选用那种,然后返回适当的值。

正式格式:${customer.Address}3 方法object user.getName() = $user.getName()一个方法就是被定义在java中的一段代码,并且它有完成某些有用工作的能力,例如一个执行计算和判断条件是否成立、满足等。

方法是一个由$开始并跟随VTL标识符组成的References,一般还包括一个前两个例子$customer.getAddress()和$purchase.getTotal()看起来挺想上面的属性$customer.Address 和$purchase.Total。

如果你觉得他们之间有某种联系的话,那你是正确的。

VTL属性可以作为VTL方法的缩写。

$customer.Address属性和使用$customer.getAddress()方法具有相同的效果。

如果可能的话使用属性的方式是比较合理的。

属性和方法的不同点在于你能够给一个方法指定一个参数列表。

正式格式:${purchase.getTotal()}4 Range OperatorRange operator可以被用于与#set和#foreach statement联合使用。

对于处理一个整型数组它是很有用的,2 循环每次循环$list中的一个值都会赋给$element变量。

$list可以是一个Vector、Hashtable或者Array。

分配给$element的值是一个java对象,并且可以通过变量被引用。

例如:如果$element t是一个java的Product 类,并且这个产品的名字可以通过调用他的getName()方法得到。

现在我们假设$list是一个Hashtable,如Velocity默认的名字。

可以通过设置 = velocityCount来改变。

计数从“1”开3 条件语句4 语句的嵌套语句中也可以嵌套其他的语句,如#if…#else…#end等。

5 注释5.1 单行注释:##这是一个注释:定义名字为mike5.2 多行注释:#*Thus begins a multi-line comment. Online visitors won‟t see this text because the Velocity Templating Engine will ignore it.*#5.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 关系和逻辑操作符例子中#if() 指令仅在$foo 和$bar都为真的时候才为真。

如果$foo 为假,则表达式也为假;并且$bar 将不被求值(类似C语言)。

如果$foo为真,Velocity 模板引擎将继续检查$bar的值,如果$bar为真,则整个表达式为真。

并且输出This AND that 。

如果$bar为假,将没有输出因为整个表达式为假。

7 Velocity 中的宏Velocity中的宏我们可以理解为函数。

Velocimacros可以在V elocity模板内实现行内定义(inline),也就意味着同一个web site内的其他Velocity模板不可以获得Velocimacros的定义。

定义一个可以被所有模板共享的Velocimacro显然是有很多好处的:它减少了在一大堆模板中重复定义的数量、节省了工作时间、减少了出错的几率、保证了单点修改。

定义模板共享的Velocimacro在velocity.properties中定义,它可以当将一个reference作为参数传递给Velocimacro时,请注意reference作为参数时是以名字的形式传递的。

这就意味着参数的值在每次Velocimacro内执行时才会被产生。

这个特性使得你可以将一个方法调用作为参数传递给Velocimacro,而每次Velocimacro执行时都是通过这个方法调用产生不同的值来执行的。

Velocimacro properties中有关宏的一些配置项:•velocimacro.libraary:一个以逗号分隔的模板库列表。

默认情况下,velocity查找唯一的一个库:VM_global_library.vm。

你可以通过配置这个属性来指定自己的模板库。

•velocimacro.permissions.allow.inline属性:有两个可选的值true或者false,通过它可以确定Velocimacros是否可以被定义在regular template内。

默认值是ture――允许设计者在他们自己的模板中定义Velocimacros。

•velocimacro.permissions.allow.inline.replace.global属性有两个可选值true和false,这个属性允许使用者确定inline的Velocimacro定义是否可以替代全局V elocimacro定义(比如在velocimacro.library 属性中指定的文件内定义的Velocimacro)。

默认情况下,此值为false。

这样就阻止本地Velocimacro 定义覆盖全局定义。

相关文档
最新文档