最近在开发基于EasyJWeb框架的项目,而页面采用的html,velocity的脚本语法。刚开始接触velocity的时候,一头雾水,现在看看它语法,感觉不难。现在跟大家分享一下常用的语法。
基本语法
1、"#"用来标识Velocity 的脚本语句,包括#set、#if 、#else、#end、#foreach、#end、#iinclude、#parse、#macro 等;
如:
#if(!student.name) <span>1</span> #else <span>2<span> #end
2、"$"用来标识一个对象(或理解为变量);
如:$i、$msg、$TagUtil.options(...)等。
3、"{}"用来明确标识Velocity 变量。
如
#set ($user="GG"}
${user}name
返回csyname
4、声明:#set ($var=XXX)
左边可以是以下的内容
Variable reference 变量
String literal 字符串
Property reference 属性
Method reference 方法
Number literal #set ($i=1) 数字
ArrayList #set ($arr=["yt1","t2"]) 字符串
算术运算符
5、注释:
单行 :## XXX
多行 :#* xxx
xxxx
xxxxxxxxxxxx*#
6、变量的定义
以"$" 开头,第一个字符必须为字母,
变量可以包含的字符有以下内容:
alphabetic (a .. z, A .. Z)
numeric (0 .. 9)
hyphen ("")
underscore ("_")
7、字段的取值
$student.name
类似:student.get("name")
8、方法
object student.getName() = $student.getName()
9、$与$!的区别
当找不到username 的时候,$username 返回字符串"$username",而$!username 返回空字符串 ""
10、双引号与引号
#set ($var="heloworld")
test"$var" 返回testheloworld
test'$var' 返回test'$var'
可以通过设置stringliterals.interpolate=false 改变默认处理方式
11、逻辑运算符:== 、 && 、|| 、!
12、循环语句
#foreach($var in $arrays ) //
#foreach( $info in $infos) <span>$!info.title</span><br> #end
13、#macro(macroName)#end 脚本函数(宏)调用
定义宏Velocimacros ,相当于函数支持包含功能
#macro( d )
<tr><td></td></tr>
#end
调用
#d()
函数(宏)定义,一般放在最前面
#macro(orderPic $type) #if ($orderField.equals($type)) <img src="/images/ico/${orderType}.gif"> #end #end
具体的调用如:<font color="#FFFFFF">头衔#orderPic("title")</font>
14、包含文件#inclue("模板文件名")或#parse("模板文件名")
主要用于处理具有相同内容的页面,比如每个网站的顶部或尾部内容。
parse 与include 的区别在于,若包含的文件中有Velocity 脚本标签,将会进一步解析,
而include 将原样显示。
15、带参数的宏
#macro( tablerows $color $somelist ) #foreach( $something in $somelist ) <tr><td bgcolor=$color>$something</td></tr> #end #end