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模板语言)初识语法总结的更多相关文章

  1. (9)模板层 - templates(模板语言、语法、取值、过滤器、变量的使用)

    django的模板语言:DTL 模板语言的变量传入 这个是标签 {{ 变量名 }} {{ 变量名 }}   #模板语言的替换可以在模板中的任意位置生效 PS:通过 . 可以做深度查询 模板语言的过滤器 ...

  2. Django模板语言初识

    一.Django框架简介 1.MVC框架 MVC,全名是Model View Controller,是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model).视图(View)和控 ...

  3. jango模板语言初识

    一.Django框架简介 1.MVC框架 MVC,全名是Model View Controller,是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model).视图(View)和控 ...

  4. 【转载】Velocity模板引擎的介绍和基本的模板语言语法使用

    原文地址http://www.itzhai.com/the-introduction-of-the-velocity-template-engine-template-language-syntax- ...

  5. Django之模板语言

    一.模板语言介绍 模板语言渲染的整个过程其实就是将html转换成函数,并为该函数提供全局变量,然后执行该函数 二.模板语言的语法 模板中也有自己的语言,该语言可以实现数据展示 # 业务请求处理做的页面 ...

  6. ssm使用velocity模板语言

    1.在pom.xml里添加velocity模板语言支持的依赖 <!-- velocity模板语言支持包 --> <dependency> <groupId>org. ...

  7. 【开发笔记】- SSM使用velocity模板语言

    1.在pom.xml里添加velocity模板语言支持的依赖 <!-- velocity模板语言支持包 --> <dependency> <groupId>org. ...

  8. Django Template Language 模板语言

    一.标签 tags 1.普通变量 普通变量用{{ }} 变量名由数字.字母.下划线组成 点.在模板语言中用来获取对象相应的属性值 示例 {# 取variable中的第一个参数 #} {{ variab ...

  9. 一个Velocity Template Language学习的框架

    Velocity Template Language(VTL)使得数据展示和后台代码的开发分离开来,最初用在基于servlet的网站开发上,它的这一特性使得它在应付MVC Web开发模式时显得尤其合适 ...

随机推荐

  1. Oracle实现分页查询的SQL语法汇总

    1.无ORDER BY排序的写法.(效率最高) 经过测试,此方法成本最低,只嵌套一层,速度最快!即使查询的数据量再大,也几乎不受影响,速度依然! sql语句如下: ) TABLE_ALIAS ; 2. ...

  2. SynchronizedMap和ConcurrentHashMap 区别

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt215 SynchronizedMap和ConcurrentHashMap的深 ...

  3. java常见面试题(一)

    一.Spring面试的问题 1.spring的事务认识 事务注解方式: @Transactional,当标于类前时,该类的所有public方法都进行事物处理. 事务的传播行为: @Transactio ...

  4. error: The requested URL returned error: 401 Unauthorized while accessing

    我遇到的其中一个问题. 问题描述: 在git push -u origin master是,提示“error: The requested URL returned error: 401 Unauth ...

  5. MPLS VPN随堂笔记1

    MPLS VPN 基础 1.MPLS vpn架构的特点 1.1.允许不同CE传递相同私网路由 1.2.SP内部(所有P路由器)不需要学习CE路由 1.3.无安全保障但有带宽保障(跟SP租用服务) 2. ...

  6. MongoDB学习之路(一)

    NoSQL简介 NoSQL(Not Only SQL),意为"不仅仅是SQL" 关系型数据库遵循ACID规则 1. A(Atomicity)原子性 指的是事务里的所有操作要么全部做 ...

  7. 201521123085 《Java程序设计》 第3周学习总结

    1. 本周学习总结 2. 书面作业 1.代码阅读 public class Test1 { private int i = 1;//这行不能修改 private static int j = 2; p ...

  8. 201521123006 《java程序设计》 第12周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容. 2. 书面作业 将Student对象(属性:int id, String name,int age,doubl ...

  9. Python数据类型方法精心整理,不必死记硬背,看看源码一切都有了

    Python认为一切皆为对象:比如我们初始化一个list时: li = list('abc') 实际上是实例化了内置模块builtins(python2中为__builtin__模块)中的list类: ...

  10. js的原型

    在讲js的原型之前,必须先了解下Object和Function. Object和Function都作为JS的自带函数,Object继承自己,Funtion继承自己,Object和Function互相是 ...