转载自 http://blog.csdn.net/cpf2016/article/details/45565525

(1)基本语法

            1.#

对于Velocity中的关键字,都是使用#开头的(想象手机上的#键,就是为了开启某功能)

如#set、#if、#else、#end、#foreach等

实例:

[html] view plain copy
  1. #if($info.imgs)
  2. <img src="$info.imgs" border=0>
  3. #else
  4. <img src="noPhoto.jpg">
  5. #end

            2.$

对于变量,都是使用$开头的

如:$name、$msg

            3.{}

对于需要明确表示的Velocity变量,可以使用{}将变量包含起来

如在页面中,需要有$someoneName这种内容,此时为了让Velocity能够区分,可以使用${someone}Name

            4.!

如果某个Velocity变量不存在,那么页面中就会显示$xxx的形式,为了避免这种形式,可以在变量名称前加上!

如页面中含有$msg,如果msg有值,将显示msg的值;如果不存在就会显示$msg。这是我们不希望看到的,为了把不存在的变量显示为空白,可以使用$!msg

(2)变量

            1.变量定义

#set($name = "hello")

例子:

[plain] view plain copy
  1. #set($root = "www")
  2. #set($name = "index")
  3. #set($template = "$root/$name")
  4. $template

结果为www/index

           2.变量赋值

$name = "hello"

赋值的左边必须是一个变量,或者是属性的引用。右边可以是:变量引用、字面字符串、属性引用、方法引用、字面数字、数组

[plain] view plain copy
  1. #set($name = $bill)   ##变量引用
  2. #set($name.pre = "monica")  ##字符串
  3. #set($name.last = $address.num) ##属性引用
  4. #set($name.mid = $hotel.find($web)) ##方法引用
  5. #set($name.num = 123) ##数字
  6. #set($name.say = ["yes",$my,"yes"]) ##数组

注意:velocity会将属性解释为属性的get方法,如:

$foo.Bar   等同于 $foo.getBar()

$foo.User("join")  等同于 $foo.getUser("join")

$foo.Request.ServerName 等同于 $foo.getRequest().getServerName()

(2)循环

         1.格式与实例

格式为:

[html] view plain copy
  1. #foreach( 单个元素名称 in 集合)
  2. ....
  3. #end

举例

[plain] view plain copy
  1. #set($list = ["yes","no","not sure"])
  2. #foreach( $elem in $list)
  3. $velocityCount  this is $elem.</br>
  4. #end

结果为:

1 this is yes.
2 this is no.
3 this is not sure.
                      注意:$velocityCount是Velocity中定义的方法,用来获得循环次数,直接调用即可

        2.根据次数来循环

直接在原来集合位置定义数字范围即可

例1-正序:

[plain] view plain copy
  1. #foreach( $num in [1..5])
  2. this is $num.</br>
  3. #end

结果为:

this is 1.
this is 2.
this is 3.
this is 4.
this is 5.

例2-逆序:

[plain] view plain copy
  1. #foreach( $num in [3..-2])
  2. this is $num.</br>
  3. #end

结果为:

this is 3.
this is 2.
this is 1.
this is 0.
this is -1.
this is -2

         3.遍历map

使用entrySet,转化为遍历set即可

[plain] view plain copy
  1. #foreach($entry in $myMap.entrySet())
  2. $entry.key : $entry.value  <br>
  3. #end

结果为:

1 : abc 
2 : bbc 
3 : cbc 
4 : dbc 
5 : ebc

(3)条件语句

         1.格式

[plain] view plain copy
  1. #if(condition)
  2. #elseif(condition)
  3. #else
  4. #end

注意:判空为#if($foo)

          2.实例

[html] view plain copy
  1. #if($age>=18)
  2. $age
  3. #else
  4. your age is below 18!
  5. #end

(4)关系和逻辑操作符

         1.&&

[html] view plain copy
  1. #if($foo && $bar)
  2. this is and
  3. #end

只有当$foo和$bar全都不为空的时候才会执行

2.||

[plain] view plain copy
  1. #if($foo || $bar)
  2. this is or<br>
  3. #else
  4. is null
  5. #end

只要有一个不为空,就会执行

         3.!

和java相同,取反

(5)宏

         1.定义

[html] view plain copy
  1. #macro(宏的名称  $参数1  $参数2 .....)
  2. 语句体(即函数体)
  3. #end

         2.调用

[html] view plain copy
  1. #宏的名称 ($参数1  $参数2 .....)

说明:参数之间用空格隔开

         3.实例

[html] view plain copy
  1. #macro (tablerows $color $list)
  2. #foreach($i in $list)
  3. <tr><td bgcolor="$color">$i<td/><tr/>
  4. #end
  5. #end

调用:

[html] view plain copy
  1. #set($contents = ["zero","one","two","three"])
  2. #set($color = "red")
  3. <table>
  4. #tablerows($color,$contents)
  5. <table/>

(6)调用实例方法

         1.定义

如果context中存储的是类实例,那么就可以调用类方法

         2.实例

方法 定义:

[java] view plain copy
  1. public class Book {
  2. ..
  3. public String show() {
  4. return "show";
  5. }
  6. }

赋值:

[java] view plain copy
  1. context.put("book", new Book());

vm中:

[html] view plain copy
  1. $book.show()

(7)转义字符'\'

如果reference,2个'\'意味着输出一个'\'

[plain] view plain copy
  1. #set($mail = "foo")
  2. $mail
  3. \$mail
  4. \\$mail
  5. \\\$mail

结果为:

foo $mail \foo \$mail

(8)内置对象

Velocity内置了一些对象,在vm中可以直接调用,如:$request,$response,$session

(9)注释

         1.单行注释##

[plain] view plain copy
  1. ##this a single line comment

2.多行注释#*  *#

[plain] view plain copy
  1. #*
  2. this is a muti-line comment
  3. see this example
  4. *#

velocity学习(2)相关推荐

  1. velocity学习(2)--VTL 语法

    注释 单行注释为 ##,多行注释为#* *#,被注释的内容不会被模板引擎解析,文档注释是:如下: #** *@author xxx *@version 5 *# 变量.属性.方法的引用 VTL 可以对 ...

  2. velocity 继续之 语法学习篇

    1.变量 在变量的定义中,我们用#set指令.比如#set($name="laizhd") 如果只写#set($name)或#set($name = null)会抛出org.apa ...

  3. velocity(vm)模板引擎学习介绍及语法

    velocity模板引擎学习 velocity与freemaker.jstl并称为java web开发三大标签技术,而且velocity在codeplex上还有.net的移植版本NVelocity,( ...

  4. 【JAVA企业级开发】浅谈关于在WEB大前端已然降临的时代中,你是否还是在学习jsp、freemarker、velocity、themleaf等模板引擎么?

    这里写目录标题 一级目录 二级目录 三级目录 一在java领域,表现层技术主要有四种:`jsp.freemarker.velocity,themleaf` 1jsp是大家最熟悉的技术 2velocit ...

  5. UNITY3D单词学习 speed和velocity的区别

    在日常用语中,这两个词没有区别,可以通用. 而在物理学里,velocity 是一个矢量(vector quantity)表示起点与终点间直线距离的长度除以所用时间所得的量,并注明方向;而 speed ...

  6. Velocity 语法学习

    2019独角兽企业重金招聘Python工程师标准>>> 1.变量的书写 用${var}或$var都可以,建议用${var},$var没有定界符,容易混淆 2.变量设置 #set($t ...

  7. jquery动画切换引擎插件 Velocity.js 学习01

    一.Velocity.js介绍 Velocity是一个jQuery插件,重新实现了$.animate() 来产生更高的性能(速度也比CSS动画库更快),而包括新的功能,以提高动画工作流程. Veloc ...

  8. SLAM--VICP(Velocity Updating Iterative Closest Point Algorithm)学习笔记

    参考资料: <VICP: Velocity Updating Iterative Closest Point Algorithm>–Seungpyo Hong Heedong Ko Jin ...

  9. “AS3.0高级动画编程”学习:第二章转向行为(上)

    因为这一章的内容基本上都是涉及向量的,先来一个2D向量类:Vector2D.as (再次强烈建议不熟悉向量运算的童鞋,先回去恶补一下高等数学-07章空间解释几何与向量代数.pdf) package { ...

最新文章

  1. FastReport 导出pdf时中文乱码的解决办法
  2. TCP实现服务器与单客户端连接(多线程)
  3. 页面加载完毕相关信息淡入效果
  4. CUDA error: an illegal memory access was encountered
  5. Nginx Http 过滤模块
  6. mysql mysqladmin 介绍_Mysql—mysqladmin 命令详解
  7. 比特(bit)和字节(byte)(1byte=8bit)
  8. js模版引擎handlebars.js实用教程——结束语
  9. numpy.cov() 计算协方差矩阵
  10. OpenERP 关于页码总页数
  11. 一条空间不足报警的分析
  12. Cesium中Homebutton改变默认跳转位置 【转】
  13. NYOJ--106--背包问题
  14. 开发内功修炼CPU篇
  15. iOS 清理缓存简介
  16. 深度装N卡LINUX驱动 性能怎么样,讲解Deepin 20开源Nouveau和闭源NVIDIA驱动,附装闭源N卡驱动的方法...
  17. CPU性能衡量参数-主频,MIPS,CPI,时钟周期,机器周期,指令周期
  18. Gikee区块链浏览器全新发布,新增BTC、ETH两大公链
  19. ValueError With n_samples=0, test_size=0.2 and train_size=None, the resulting train set will be empt
  20. php起始符大全,以下哪种标签不是 PHP 起始 / 结束符

热门文章

  1. 4.extern关键字.rs
  2. 视音频数据处理入门:PCM音频采样数据处理
  3. 对现有的所能找到的DDOS代码(攻击模块)做出一次分析----GET篇
  4. interface接口实例
  5. WebRTC 的 log 系统实现分析
  6. 秋天的第一份“干货” I Referer 防盗链,为什么少了个字母 R?
  7. Redis 多机服务 : 主从同步、哨兵、集群
  8. python中的Xpath方法总结
  9. AWS如何迁移实例到另一个区?
  10. 分布式一致性算法Raft简介(上)