velocity学习(2)
转载自 http://blog.csdn.net/cpf2016/article/details/45565525
(1)基本语法
1.#
对于Velocity中的关键字,都是使用#开头的(想象手机上的#键,就是为了开启某功能)。
如#set、#if、#else、#end、#foreach等
实例:
- #if($info.imgs)
- <img src="$info.imgs" border=0>
- #else
- <img src="noPhoto.jpg">
- #end
2.$
对于变量,都是使用$开头的
如:$name、$msg
3.{}
对于需要明确表示的Velocity变量,可以使用{}将变量包含起来
如在页面中,需要有$someoneName这种内容,此时为了让Velocity能够区分,可以使用${someone}Name
4.!
如果某个Velocity变量不存在,那么页面中就会显示$xxx的形式,为了避免这种形式,可以在变量名称前加上!
如页面中含有$msg,如果msg有值,将显示msg的值;如果不存在就会显示$msg。这是我们不希望看到的,为了把不存在的变量显示为空白,可以使用$!msg
(2)变量
1.变量定义
#set($name = "hello")
例子:
- #set($root = "www")
- #set($name = "index")
- #set($template = "$root/$name")
- $template
结果为www/index
2.变量赋值
$name = "hello"
赋值的左边必须是一个变量,或者是属性的引用。右边可以是:变量引用、字面字符串、属性引用、方法引用、字面数字、数组
- #set($name = $bill) ##变量引用
- #set($name.pre = "monica") ##字符串
- #set($name.last = $address.num) ##属性引用
- #set($name.mid = $hotel.find($web)) ##方法引用
- #set($name.num = 123) ##数字
- #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.格式与实例
格式为:
- #foreach( 单个元素名称 in 集合)
- ....
- #end
举例
- #set($list = ["yes","no","not sure"])
- #foreach( $elem in $list)
- $velocityCount this is $elem.</br>
- #end
结果为:
1 this is yes.
2 this is no.
3 this is not sure.
注意:$velocityCount是Velocity中定义的方法,用来获得循环次数,直接调用即可
2.根据次数来循环
直接在原来集合位置定义数字范围即可
例1-正序:
- #foreach( $num in [1..5])
- this is $num.</br>
- #end
结果为:
this is 1.
this is 2.
this is 3.
this is 4.
this is 5.
例2-逆序:
- #foreach( $num in [3..-2])
- this is $num.</br>
- #end
结果为:
this is 3.
this is 2.
this is 1.
this is 0.
this is -1.
this is -2
3.遍历map
使用entrySet,转化为遍历set即可
- #foreach($entry in $myMap.entrySet())
- $entry.key : $entry.value <br>
- #end
结果为:
1 : abc
2 : bbc
3 : cbc
4 : dbc
5 : ebc
(3)条件语句
1.格式
- #if(condition)
- #elseif(condition)
- #else
- #end
注意:判空为#if($foo)
2.实例
- #if($age>=18)
- $age
- #else
- your age is below 18!
- #end
(4)关系和逻辑操作符
1.&&
- #if($foo && $bar)
- this is and
- #end
只有当$foo和$bar全都不为空的时候才会执行
2.||
- #if($foo || $bar)
- this is or<br>
- #else
- is null
- #end
只要有一个不为空,就会执行
3.!
和java相同,取反
(5)宏
1.定义
- #macro(宏的名称 $参数1 $参数2 .....)
- 语句体(即函数体)
- #end
2.调用
- #宏的名称 ($参数1 $参数2 .....)
说明:参数之间用空格隔开
3.实例
- #macro (tablerows $color $list)
- #foreach($i in $list)
- <tr><td bgcolor="$color">$i<td/><tr/>
- #end
- #end
调用:
- #set($contents = ["zero","one","two","three"])
- #set($color = "red")
- <table>
- #tablerows($color,$contents)
- <table/>
(6)调用实例方法
1.定义
如果context中存储的是类实例,那么就可以调用类方法
2.实例
方法 定义:
- public class Book {
- ..
- public String show() {
- return "show";
- }
- }
赋值:
- context.put("book", new Book());
vm中:
- $book.show()
(7)转义字符'\'
如果reference,2个'\'意味着输出一个'\'
- #set($mail = "foo")
结果为:
foo $mail \foo \$mail
(8)内置对象
Velocity内置了一些对象,在vm中可以直接调用,如:$request,$response,$session
(9)注释
1.单行注释##
- ##this a single line comment
2.多行注释#* *#
- #*
- this is a muti-line comment
- see this example
- *#
velocity学习(2)相关推荐
- velocity学习(2)--VTL 语法
注释 单行注释为 ##,多行注释为#* *#,被注释的内容不会被模板引擎解析,文档注释是:如下: #** *@author xxx *@version 5 *# 变量.属性.方法的引用 VTL 可以对 ...
- velocity 继续之 语法学习篇
1.变量 在变量的定义中,我们用#set指令.比如#set($name="laizhd") 如果只写#set($name)或#set($name = null)会抛出org.apa ...
- velocity(vm)模板引擎学习介绍及语法
velocity模板引擎学习 velocity与freemaker.jstl并称为java web开发三大标签技术,而且velocity在codeplex上还有.net的移植版本NVelocity,( ...
- 【JAVA企业级开发】浅谈关于在WEB大前端已然降临的时代中,你是否还是在学习jsp、freemarker、velocity、themleaf等模板引擎么?
这里写目录标题 一级目录 二级目录 三级目录 一在java领域,表现层技术主要有四种:`jsp.freemarker.velocity,themleaf` 1jsp是大家最熟悉的技术 2velocit ...
- UNITY3D单词学习 speed和velocity的区别
在日常用语中,这两个词没有区别,可以通用. 而在物理学里,velocity 是一个矢量(vector quantity)表示起点与终点间直线距离的长度除以所用时间所得的量,并注明方向;而 speed ...
- Velocity 语法学习
2019独角兽企业重金招聘Python工程师标准>>> 1.变量的书写 用${var}或$var都可以,建议用${var},$var没有定界符,容易混淆 2.变量设置 #set($t ...
- jquery动画切换引擎插件 Velocity.js 学习01
一.Velocity.js介绍 Velocity是一个jQuery插件,重新实现了$.animate() 来产生更高的性能(速度也比CSS动画库更快),而包括新的功能,以提高动画工作流程. Veloc ...
- SLAM--VICP(Velocity Updating Iterative Closest Point Algorithm)学习笔记
参考资料: <VICP: Velocity Updating Iterative Closest Point Algorithm>–Seungpyo Hong Heedong Ko Jin ...
- “AS3.0高级动画编程”学习:第二章转向行为(上)
因为这一章的内容基本上都是涉及向量的,先来一个2D向量类:Vector2D.as (再次强烈建议不熟悉向量运算的童鞋,先回去恶补一下高等数学-07章空间解释几何与向量代数.pdf) package { ...
最新文章
- FastReport 导出pdf时中文乱码的解决办法
- TCP实现服务器与单客户端连接(多线程)
- 页面加载完毕相关信息淡入效果
- CUDA error: an illegal memory access was encountered
- Nginx Http 过滤模块
- mysql mysqladmin 介绍_Mysql—mysqladmin 命令详解
- 比特(bit)和字节(byte)(1byte=8bit)
- js模版引擎handlebars.js实用教程——结束语
- numpy.cov() 计算协方差矩阵
- OpenERP 关于页码总页数
- 一条空间不足报警的分析
- Cesium中Homebutton改变默认跳转位置 【转】
- NYOJ--106--背包问题
- 开发内功修炼CPU篇
- iOS 清理缓存简介
- 深度装N卡LINUX驱动 性能怎么样,讲解Deepin 20开源Nouveau和闭源NVIDIA驱动,附装闭源N卡驱动的方法...
- CPU性能衡量参数-主频,MIPS,CPI,时钟周期,机器周期,指令周期
- Gikee区块链浏览器全新发布,新增BTC、ETH两大公链
- ValueError With n_samples=0, test_size=0.2 and train_size=None, the resulting train set will be empt
- php起始符大全,以下哪种标签不是 PHP 起始 / 结束符