博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
velocity语法
阅读量:5237 次
发布时间:2019-06-14

本文共 2655 字,大约阅读时间需要 8 分钟。

1.声明变量 #set($var = XXX) 右边可以是以下的内容 Variable reference String literal Property reference Method reference Number literal #set ($i=1) ArrayList #set ($arr=["yt1","t2"]) 技持算术运算符

2、注释: 单行## XXX 多行#* xxx xxxx xxxxxxxxxxxx*#

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 $user.name hashtable user中的的name值.类似:user.get("name")

5、Methods object 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" 返回testhello test'$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>$customer.Name</td></tr> #end

11、velocityCount变量在配置文件中定义 # Default name of the loop counter # variable reference. directive.foreach.counter.name = velocityCount # Default starting value of the loop # counter variable reference. directive.foreach.counter.initial.value = 1

12、定义宏Velocimacros ,相当于函数 支持包含功能 #macro( d ) <tr><td></td></tr> #end 调用 #d()

13、带参数的宏 #macro( tablerows $color $somelist ) #foreach( $something in $somelist ) <tr><td bgcolor=$color>$something</td></tr> #end #end 调用 # tablerows (“red” “…”)

项目开发中需要注意到的要点: 1. vm中显示变量,一律加!和{},如:$!{userName}、$!{userVO.name}、$!{userVO.getName()}、$!{userMap.get(“Bob”)} 2. 合并字符串 如果变量是字符串或数值型,如 #set($user = “Tester”),则应为 “welecom$!{user}”,而不是 “welcome” + $user 3. #if($var)条件判断,当且仅当:$var存在(如果$var是Boolean/boolean型,还必须$var的值为Boolean.true/true)时,条件才成立 4. #foreach()循环的时候,有个系统变量$velocityCount可直接使用,不必自己设定额外的计数器 5. 比较字符串相等,#if($var == “test”)   #if(“test”.equals($var))均可, 6. vm中生成URL #set($userName = “Bob”) “$offerModule.setTarget('modifySingleOffer.vm').addQueryData(‘userName’, $userName).fork()” “$offerModule.setTarget('modifySingleOffer.vm').addQueryData(‘userName’, ‘Bob’).fork()” 目标大致如: 7. vm中调用control $control.setTemplate("home:pageNavigator.vm").setParameter("position", "top").setParameter("pageList", $pageList) 8.其它可能会被使用到的,如定义自己的宏(定义和修改宏,需要重新启动应用服务器才生效)

转载于:https://www.cnblogs.com/YingYue/p/3937080.html

你可能感兴趣的文章
掌握JavaScript语言的思想前提
查看>>
sqlserver2008存储过程(比较两个日期大小和获取当前月最大天数的存储过程)
查看>>
一个基于Orchard的开源CRM --coevery简介
查看>>
每周.NET前沿技术文章摘要(2017-05-17)
查看>>
组建自己的局域网(可以将PC机实现为服务器)
查看>>
jstack的使用:死锁问题实战
查看>>
Ubuntu Sublime Text 设置等宽字体
查看>>
双摆的程序实现
查看>>
Button 控件
查看>>
用游标来查找数据例子:
查看>>
不是第一次的第一篇
查看>>
正则表达式实例
查看>>
ROS 教程之 navigation :在 catkin 环境下创建costmap layer plugin
查看>>
数据类型之整型;浮点型;字符串;列表
查看>>
浏览器的get请求和post请求的区别
查看>>
GDI+用PNG图片做半透明异型窗口
查看>>
<神鬼传奇>客户端-终极优化精简方法
查看>>
Group by、having、order by、Distinct 使用注意事项
查看>>
H3C交换机配置远程管理配置
查看>>
一篇文章看懂Java并发和线程安全
查看>>