VTL(Velocity Templates Language,即Velocity模板语言)初识语法总结
1.velocity是一门基于Java语言的视图表现层模板引擎,它可以取代jsp,比jsp更高效。
2.velocity变量的定义与引用
(1).定义一个变量:#set ($a = "velocity"),变量名为 $a
(2).引用上面定义的变量:Hello $a
3.velocity中!号的含义及使用
(1).#if ($!msg) hello #end:若引用值 $msg 不为空则输出 hello,否则什么都不输出。
4.velocity中的循环语句语法
#foreach ($stu in $slist)
${stu.name}
${stu.age}
#end
以上$slist是从Java代码中引用的对象,$stu是$slist中的一个元素。
5.velocity中的注释
(1).单行注释:##注释内容
(2).多行注释:
#*
注释内容
*#
(3).文档格式:
#**
This is a VTL comment block and
may be used to store such information
as the document author and versioning
information:
@version 5
@author
*#
6.在VTL中有三种类型的references:变量(variables)、属性(properties)、方法(methods)。
${mudSlinger} 变量
${customer.Address} 属性
${purchase.getTotal()} 方法
7.注意:VTL中未被定义的变量将被认为是一个字符串,所以以下例子:
#set( $foo = “gibbous” )
$moon = $foo
的输出结果是:
$moon = gibbous
8.注意VTL中不会将reference解释为对象的实例变量。例如:$foo.Name将被解释
为Foo对象的getName()方法,而不是Foo对象的Name实例变量。
9.#set ( $monkey.Say = [“Not”, $my, “fault”] )
例子的取值方法为:$monkey.Say.get(0)
10.#if ( $foo )
<strong>Velocity!</strong>
#end
上例中的条件语句将在以下两种条件下成立:
$foo是一个boolean型的变量,且它的值为true
$foo变量的值不为null
11.if else语句例子:
#if( $foo < 10 )
<strong> Go North </strong>
#elseif( $foo == 10 )
<strong> Go East </strong>
#elseif( $foo == 6 )
<strong> Go South </strong>
#else
<strong> Go West </strong>
#end
12.velocity的逻辑运算符:
Velocity有AND、OR和NOT逻辑运算符。下面是一些例子:
## logical AND
#if( $foo && $bar )
<strong> This AND that </strong>
#end
## logical OR
#if ( $foo || $bar )
<strong>This OR That </strong>
#end
##logical NOT
#if ( !$foo )
<strong> NOT that </strong>
#end
13.Velocity还特别提供了得到循环次数的方法,以便你可以像下面这样作:
<table>
#foreach ( $customer in $customerList )
<tr><td>$velocityCount</td><td>$customer.Name</td></tr>
#end
</table>
$velocityCount变量的名字是Velocity默认的名字,你也可以通过修改velocity.properties文件来改变它。
默认情况下,计数从“1”开始,但是你可以在velocity.properties设置它是从“1”还是从“0”开始。
14.include
#include script element允许模板设计者引入本地文件。被引入文件的内容将不会通过模板引擎被render。
为了安全的原因,被引入的本地文件只能在TEMPLATE_ROOT目录下。
#inclued ( “one.txt” )
如果您需要引入多个文件,可以用逗号分隔就行:
#include ( “one.gif”, “two.txt”, “three.htm” )
在括号内可以是文件名,但是更多的时候是使用变量的:
#inclue ( “greetings.txt”, $seasonalstock )
15.parse
#parse script element允许模板设计者一个包含VTL的本地文件。Velocity将解析其中的VTL并render模板。
#parse( “me.vm” )
就像#include,#parse接受一个变量而不是一个模板。任何由#parse指向的模板都必须包含在
TEMPLATE_ROOT目录下。与#include不同的是,#parse只能指定单个对象。
16.#stop script element允许模板设计者停止执行模板引擎并返回。把它应用于debug是很有帮助的。
17.#macro script element允许模板设计者定义一段可重用的VTL template。例如:
#macro ( d )
<tr><td></td></tr>
#end
在上面的例子中Velocimacro被定义为d,然后你就可以在任何VTL directive中以如下方式调用它:
#d()
18.其他特性和杂项
math 在模板中可以使用Velocity内建的算术函数,如:加、减、乘、除
#set ( $foo = $bar + 3 )
#set ( $foo = $bar - 4 )
#set ( $foo = $bar * 6 )
#set ( $foo = $bar / 2 )
当执行除法时将返回一个Integer类型的结果。而余数你可以使用%来得到:
#set ( $foo = $bar % 5 )
19.开发人员最常问的问题是我如何作字符拼接?在java中是使用“+”号来完成的。
在VTL里要想实现同样的功能你只需要将需要联合的reference放到一起就行了。例如:
#set ( $size = “Big” )
#set ( $name = “Ben” )
The clock is $size$name.
输出结果将是:The clock is BigBen.。更有趣的情况是:
#set ( $size = “Big” )
#set ( $name = “Ben” )
#set ( $clokc = “$size$name” )
The clock is $clock.
上例也会得到同样的结果。
VTL(Velocity Templates Language,即Velocity模板语言)初识语法总结的更多相关文章
- (9)模板层 - templates(模板语言、语法、取值、过滤器、变量的使用)
django的模板语言:DTL 模板语言的变量传入 这个是标签 {{ 变量名 }} {{ 变量名 }} #模板语言的替换可以在模板中的任意位置生效 PS:通过 . 可以做深度查询 模板语言的过滤器 ...
- Django模板语言初识
一.Django框架简介 1.MVC框架 MVC,全名是Model View Controller,是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model).视图(View)和控 ...
- jango模板语言初识
一.Django框架简介 1.MVC框架 MVC,全名是Model View Controller,是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model).视图(View)和控 ...
- 【转载】Velocity模板引擎的介绍和基本的模板语言语法使用
原文地址http://www.itzhai.com/the-introduction-of-the-velocity-template-engine-template-language-syntax- ...
- Django之模板语言
一.模板语言介绍 模板语言渲染的整个过程其实就是将html转换成函数,并为该函数提供全局变量,然后执行该函数 二.模板语言的语法 模板中也有自己的语言,该语言可以实现数据展示 # 业务请求处理做的页面 ...
- ssm使用velocity模板语言
1.在pom.xml里添加velocity模板语言支持的依赖 <!-- velocity模板语言支持包 --> <dependency> <groupId>org. ...
- 【开发笔记】- SSM使用velocity模板语言
1.在pom.xml里添加velocity模板语言支持的依赖 <!-- velocity模板语言支持包 --> <dependency> <groupId>org. ...
- Django Template Language 模板语言
一.标签 tags 1.普通变量 普通变量用{{ }} 变量名由数字.字母.下划线组成 点.在模板语言中用来获取对象相应的属性值 示例 {# 取variable中的第一个参数 #} {{ variab ...
- 一个Velocity Template Language学习的框架
Velocity Template Language(VTL)使得数据展示和后台代码的开发分离开来,最初用在基于servlet的网站开发上,它的这一特性使得它在应付MVC Web开发模式时显得尤其合适 ...
随机推荐
- Spring 事务管理笔记
本文为 Spring 框架的事务管理学习笔记,官网文档地址为:Transaction Management,隔离级别及传播属性解释来自 org.springframework.transaction. ...
- cat、tail、head、tee、grep、wc、sort文件操作和过滤
详见;http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt103 文件操作和过滤 绝大多数命令行工作是针对文件的.我们会在本节中讨论如何 ...
- 第4阶段——制作根文件系统之分析init_post()如何启动第1个程序(1)
本章学习如何启动第一个应用程序 1.在前面的分析中我们了解到,在init进程中内核挂接到根文件系统之后,会开始启动第一个应用程序: kernel_init函数代码如下: static int __in ...
- 201521123084 《Java程序设计》第7周学习总结
第7周-集合 1. 本周学习总结 以你喜欢的方式(思维导图或其他)归纳总结集合相关内容. 参考资料: XMind ------------------------------------------- ...
- 个人作业3--个人总结(Alpha阶段)
一.Alpha阶段总结 这是第一次接触APP的程序设计,在组员的共同努力下实现了不少功能,但功能与界面中都有不少欠缺之处,希望在后续阶段能继续完善 二.提出问题 1.在第二章 2.3 中,通过PSP模 ...
- # 团队作业8——第二次项目冲刺(Beta阶段)--5.27 seventh day
团队作业8--第二次项目冲刺(Beta阶段)--5.27 seventh day Day six: 会议照片 项目进展 Beta冲刺的最后一天,以下是今天具体任务安排: 队员 昨天已完成的任务 今日计 ...
- Quartz的misfire处理机制分析
Quartz是一个特性丰富的开源的任务调度开发库,它可以很方便的集成到你的应用程序中.在Quartz中,当一个持久的触发器因为调度器被关闭或者线程池中没有可用的线程而错过了激活时间时,就会发生激活失败 ...
- 201521123036 《Java程序设计》第3周学习总结
本周学习总结 初学面向对象,会学习到很多碎片化的概念与知识.尝试学会使用思维导图将这些碎片化的概念.知识组织起来. 书面作业 Q1:代码阅读 public class Test1 { private ...
- 201521123060《Java程序设计》第2周学习总结
1. 本周学习总结 a.进一步熟悉了Eclipse的使用和java程序的编写: b.学习了java数据的基本类型:整数类型,浮点类型等: c.学习了算数运算符,赋值运算符,位运算符,关系运算符,逻辑运 ...
- 201521123118《java程序设计》第一周学习总结
1. 本周学习总结 根据学习的过程中,虽然听学习过的人说过,c语言和java语言差不多,学习过c语言 在学java会比较容易,但是这一周发现,java和c还是有一些差别的: java语言是面向对象的语 ...