Velocity脚本简明教程
- 格式:doc
- 大小:35.50 KB
- 文档页数:7
velocity 模板 if判断简书Velocity模板是一种基于Java的模板引擎,它可以用于生成HTML、XML、JSON等各种格式的文本。
Velocity模板引擎的核心思想是将模板文件中的变量、条件语句、循环语句等标记替换成具体的值或代码,从而生成最终的文本。
在Velocity模板中,if判断是一种非常常见的语句。
if语句用于根据某个条件来判断是否执行某段代码。
if语句的语法格式如下:```#if(条件表达式)//执行代码块#elseif(条件表达式)//执行代码块#else//执行代码块#end```其中,条件表达式可以是一个变量、一个函数调用、一个比较表达式等。
如果条件表达式的值为true,则执行对应的代码块;否则,继续判断下一个条件表达式,直到找到一个为true的条件表达式或者执行完所有的条件表达式。
下面是一个简单的例子,演示了如何在Velocity模板中使用if判断:```#set($score = 80)#if($score >= 90)优秀#elseif($score >= 80)良好#elseif($score >= 70)中等#elseif($score >= 60)及格#else不及格#end```在这个例子中,我们定义了一个变量$score,并根据它的值来判断学生的成绩等级。
如果成绩大于等于90分,则输出“优秀”;如果成绩大于等于80分,则输出“良好”;以此类推。
除了if语句外,Velocity模板还支持循环语句、变量定义、函数调用等多种语法。
通过灵活运用这些语法,我们可以轻松地生成各种格式的文本,从而实现各种需求。
总之,Velocity模板是一种非常强大、灵活的模板引擎,它可以帮助我们快速生成各种格式的文本。
如果你需要在Java项目中生成HTML、XML、JSON等文本,不妨尝试一下Velocity模板引擎,相信它会给你带来很多便利。
java模板引擎velocity 方法
Velocity是一种Java模板引擎,用于将静态文本与动态数据进行合并生成输出文本。
它提供了一些方法来操作和处理数据,包括:
1. #set:用于设置新的变量或修改已有的变量的值。
示例:#set($name = "John Doe")
2. #if:用于条件判断,根据条件的结果来执行不同的操作。
示例:#if($age < 18)
You are a minor.
#else
You are an adult.
#end
3. #foreach:用于循环迭代集合或数组中的元素,执行指定的
操作。
示例:#foreach($item in $list)
$item
#end
4. #macro:用于定义重复使用的代码块,类似于函数或宏。
示例:#macro(printName $name)
Hello, $name!
#end
5. #include:用于包含其他模板文件,将其合并到当前模板中。
示例:#include("header.vm")
这些方法使得在Velocity模板中可以实现复杂的逻辑和动态操作。
在使用Velocity模板引擎时,可以通过上述方法来处理和操作数据,生成最终的输出文本。
velocity模板Velocity模板。
Velocity是一种用于生成文本输出的模板语言,它可以用于生成HTML、XML、JSON等各种文档格式。
Velocity模板可以帮助开发人员将数据和模板进行分离,提高了代码的可维护性和可读性。
本文将介绍Velocity模板的基本语法和常见用法,希望能够帮助大家更好地理解和使用Velocity模板。
1. 变量定义和输出。
在Velocity模板中,可以使用$符号来引用变量,变量的定义和赋值使用#set指令。
例如:```。
#set($name = "Velocity")。
Welcome to $name!```。
上面的例子中,我们定义了一个名为name的变量,并将其赋值为"Velocity",然后通过$name来引用这个变量。
在模板输出中,$name会被替换为实际的数值,输出结果为:```。
Welcome to Velocity!```。
2. 条件判断。
Velocity模板中的条件判断使用#if指令。
例如:```。
#set($score = 85)。
#if($score >= 60)。
You have passed the exam.#else。
You have failed the exam.#end。
```。
在上面的例子中,我们定义了一个名为score的变量,并根据其数值进行条件判断。
如果score大于等于60,则输出"You have passed the exam.",否则输出"You have failed the exam."。
3. 循环。
Velocity模板中的循环使用#foreach指令。
例如:```。
#set($list = ["apple", "banana", "orange"])。
#foreach($item in $list)。
Velocity用户手册--中文版1 关于Velocity用户指南旨在帮助页面设计者和内容提供者了解Velocity和其简单而又强大的脚本语言(Velocity Template Language (VTL))。
本指南中有很多示例展示了用Velocity来讲动态内容嵌入到网站之中,但是所有的VTL examples都同演示用于所有的页面和模版。
感谢选择Velocity!2 Velocity是什么?Velocity是一个基于java的模板引擎(template engine)。
它允许任何人仅仅简单的使用模板语言(template language)来引用由java代码定义的对象。
Velocity的能力远不止web站点开发这个领域,例如,它可以从模板(template)产生SQL和PostScript、XML,它也可以被当作一个独立工具来产生源代码和报告,或者作为其他系统的集成组件使用。
Velocity也可以为Turbine web开发架构提供模板服务(template service)。
Velocity+Turbine提供一个模板服务的方式允许一个web应用以一个真正的MVC模型进行开发。
3 Velocity能为我们作什么?3.1 The Mud Store Example假设你是一家专门出售泥浆(Mud)的在线商店的页面设计人员,让我们暂且称它为“在线MUD商店”。
你们的业务很旺,客户下了各种类型和数量的mud 订单。
他们都是通过输入用户名和密码后才登陆到你的网站,登陆后就允许他们查看订单并购买更多的mud。
现在,一种非常流行的mud正在打折销售。
另外有一些客户规律性的购买另外一种也在打折但是不是很流行的Bright Red Mud,由于购买的人并不多所以它被安置在页面的边缘。
所有用户的信息都是被跟踪并存放于数据库中的,所以某天有一个问题可能会冒出来:为什么不使用velocity 来使用户更好的浏览他们感兴趣的商品呢?Velocity使得web页面的客户化工作非常容易。
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或者说这个概念吧。
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入门使用教程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是⼀个基于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,如果加上!的话,就会显⽰空⽩,这样才⽐较合理。
Velocity脚本简明教程文 / YaSin来源于:博客园很多人下载了EasyJWeb的开源应用示例,但是对动态页面模板文件中的标签使用不是很熟悉,这里简单介绍一下。
EasyJWeb特定把视图限定为Velocity,因为我们觉得在Velocity在表现上从可维护性、简洁性乃灵活性上,比JSP及其它视力技术表现强得多。
虽然我们可以非常简单把EasyJWeb扩展成支持多种视力技术,但当前我们不打算这样做!使用EasyJWeb的目的,是在于把页面-程序完成分开,就也就是一个项目中,程序员使用专业Java开发工具(如Eclipse、JBuilder等)来编写、调试、测试程序,页面制作人员使用专业的网页制作工具(如Macromedia Dreamweaver)来设计制作网页,而两者之间的协调通过一个规范的接口协议来解决。
需要在页面里面加如一些标签,来生成动态内容,这一工作可以交由网页制作人员来完成。
因为使用Velocity作为视图,由于他的语法、功能及使用方法都比较简单,因此一般情况下,一天以内就能让页面制作人员熟练掌握其用法。
Velocity是一个基于java的模板引擎(template engine),它允许任何人仅仅简单的使用模板语言(template language)来引用由java代码定义的对象。
作为一个比较完善的模板引擎,Velocity的功能是比较强大的,但强大的同时也增加了应用复杂性。
一、基本语法1、"#"用来标识Velocity的脚本语句,包括#set、#if 、#else、#end、#foreach、#end、#include、#parse、#macro等;如:#if($info.imgs)<img src="$info.imgs" border=0>#else<img src="noPhoto.jpg">#end2、"$"用来标识一个对象(或理解为变量);如:$i、$msg、$TagUtil.options(...)等。
3、"{}"用来明确标识Velocity变量;比如在页面中,页面中有一个$someonename,此时,Velocity将把someonename作为变量名,若我们程序是想在someone这个变量的后面紧接着显示name字符,则上面的标签应该改成${someone}name。
4、"!"用来强制把不存在的变量显示为空白。
如当页面中包含$msg,如果msg对象有值,将显示msg的值,如果不存在msg对象同,则在页面中将显示$msg字符。
这是我们不希望的,为了把不存在的变量或变量值为null的对象显示为空白,则只需要在变量名前加一个“!”号即可。
如:$!msg二、在EasyJWeb中的最佳实践理论上你可以在EasyjWeb模板使用所有Velocity的脚本及功能,但我们不推荐你在界面模板中使用过多过复杂的脚本表达方式,在万不得已的情况下,不要在界面模板中加入任何复杂的逻辑,更不要在界面模板中加入变量声明、逻辑运算符等等。
在EasyJWeb中,我们提供了五条基本的模板脚本语句,基本上就能满足所有应用模板的要求。
这四条模板语句很简单,可以直接由界面设计人员来添加。
在当前很多EasyJWeb 的应用实践中,我们看到,所有界面模板中归纳起来只有下面四种简单模板脚本语句即可实现:1、$!obj 直接返回对象结果。
如:在html标签中显示java对象msg的值。
<p>$!msg</p>在html标签中显示经过HtmlUtil对象处理过后的msg对象的值<p>$!HtmlUtil.doSomething($!msg)</p>2、#if($!obj) #else #end 判断语句如:在EasyJWeb各种开源应用中,我们经常看到的用于弹出提示信息msg的例子。
#if($msg)<script>alert('$!msg');</script>#end上面的脚本表示当对象msg对象存在时,输出<script>等后面的内容。
3、#foreach( $info in $list) $info.someList #end 循环读取集合list中的对象,并作相应的处理。
如:EasyJF开源论坛系统中论(0.3)坛首页显示热门主题的html界面模板脚本:#foreach( $info in $hotList1)<a href="/bbsdoc.ejf?easyJWebCommand=show&&cid=$!info.cid"target="_blank">$!info.title</a><br>#end上面的脚本表示循环遍历hotList1集合中的对象,并输出对象的相关内容。
4、#macro(macroName)#end 脚本函数(宏)调用,不推荐在界面模板中大量使用。
如:在使用EasyJWeb Tools快速生成的添删改查示例中,可以点击列表的标题栏进行升降排序显示,这是我们在EasyJWeb应用中经常看到的一个排序状态显示的模板内容。
函数(宏)定义,一般放在最前面#macro(orderPic $type)#if ($orderField.equals($type))<img src="/ico/${orderType}.gif">#end#end具体的调用如:<font color="#FFFFFF">头衔#orderPic("title")</font>5、包含文件#inclue("模板文件名")或#parse("模板文件名")主要用于处理具有相同内容的页面,比如每个网站的顶部或尾部内容。
使用方法,可以参考EasyJF开源Blog及EasyJF开源论坛中的应用!如:#parse("/blog/top.html")或#include("/blog/top.html")parse与include的区别在于,若包含的文件中有Velocity脚本标签,将会进一步解析,而include将原样显示。
三、关于#set的使用在万不得已的时候,不要在页面视图自己声明Velocity脚本变量,也就是尽量少使用#set。
有时候我们需要在页面中显示序号,而程序对象中又没有包含这个序号属性同,可以自己定义。
如在一个循环体系中,如下所示:#set ($i=0)#foreach($info in $list)序号:$i#set($i=$i+1)#end四、Velocity脚本语法摘要1、声明:#set ($var=XXX)左边可以是以下的内容Variable referenceString literalProperty referenceMethod referenceNumber literal #set ($i=1)ArrayList #set ($arr=["yt1","t2"])算术运算符2、注释:单行## XXX多行#* xxxxxxxxxxxxxxxxxxx*#References 引用的类型3、变量 Variables以 "$" 开头,第一个字符必须为字母。
character followed by a VTL Identifier. (a .. z or A .. Z).变量可以包含的字符有以下内容:alphabetic (a .. z, A .. Z)numeric (0 .. 9)hyphen ("-")underscore ("_")4、Properties$Identifier.Identifier$hashtable user中的的name值.类似:user.get("name")5、Methodsobject user.getName() = $user.getName()6、Formal Reference Notation用{}把变量名跟字符串分开如#set ($user="csy"}${user}name返回csyname$username$!username$与$!的区别当找不到username的时候,$username返回字符串"$username",而$!username返回空字符串""7、双引号与引号#set ($var="helo")test"$var" 返回testhellotest'$var' 返回test'$var'可以通过设置 stringliterals.interpolate=false改变默认处理方式8、条件语句#if( $foo )<strong>Velocity!</strong>#end#if($foo)#elseif()#else#end当$foo为null或为Boolean对象的false值执行.9、逻辑运算符:== && || !10、循环语句#foreach($var in $arrays ) // 集合包含下面三种Vector, a Hashtable or an Array#end#foreach( $product in $allProducts )<li>$product</li>#end#foreach( $key in $allProducts.keySet() )<li>Key: $key -> Value: $allProducts.get($key)</li>#end#foreach( $customer in $customerList )<tr><td>$velocityCount</td><td>$</td></tr> #end11、velocityCount变量在配置文件中定义# Default name of the loop counter# variable reference. = velocityCount# Default starting value of the loop# counter variable reference.directive.foreach.counter.initial.value = 112、包含文件#include( "one.gif","two.txt","three.htm" )13、Parse导入脚本#parse("me.vm" )14、#stop 停止执行并返回15、定义宏Velocimacros ,相当于函数支持包含功能#macro( d )<tr><td></td></tr>#end调用#d()16、带参数的宏#macro( tablerows $color $somelist )#foreach( $something in $somelist )<tr><td bgcolor=$color>$something</td></tr>#end#end17、Range Operator#foreach( $foo in [1..5] )本文来源:/yasin/archive/2010/04/02/1703188.html。