大家好,又见面了,我是你们的朋友全栈君。
Velocity是基于Java的模板引擎,它允许页面设计者引用Java中定义的方法。页面设计者和Java开发者能够同时使用MVC的模式开发网站,这样网页设计者能够把精力放在页面的设计上,程序员也可以把精力放在代码开发上。Velocity把Java代码从Web页面中分离, 使网站可维护性更强,同时也在Java服务器页面(JSPs)或者PHP中提供了可视化交互的选择。
Velocity 可以被用在以下场景中:
velocity 中的变量是弱类型,大小写敏感。
#set($name="velocity")
当使用 set 指令时,等号后面引号中的字面字符串将解析和重新解析,例如出现以 $ 开始的字符串时,将做变量的替换。
#set($hello="hello $name")
上面的这个等式将会给 $hello 赋值为“hello velocity”
在模板文件中使用 name 或者 {name} 来使用定义的变量。推荐使用 {name} 这种格式,因为在模板中同时可能定义了类似 name 和 names 的两个变量,如果不选用大括号的话,引擎就没有办法正确识别 names 这个变量。对于一个复杂对象类型的变量,例如 person,可以使用 {person.name} 来访问 person 的 name 属性。值得注意的是,这里的 {person.name} 并不是直接访问 person 的 name 属性,而是访问 person 的 getName() 方法,所以 {person.name} 和
对于 Velocity 来说,变量是弱数据类型的,可以在赋了一个 String 给变量之后再赋一个数字或者数组给它。
赋值的左边必须是一个变量或者属性引用。
赋值的右边可以是以下6种类型之一:
#set($foo = $bar)
#set($foo ="hello")
#set($foo.name = $bar.name)
#set($foo.name = $bar.getName($arg))
#set($foo = 123)
#set($foo = ["foo",$bar])
注:(1)如果上述例子中右值为 null,则左值不会被赋值,也就是说会保留以前的值。
(2)Velocity 模板中未被定义的变量将会认为是字符串。例如:
#set($foo = $bar)
$foo
输出结果:
$foo
#set($list=["velocity","freemarker","jsp"])
#foreach($element in $list)
<p>${velocityCount}. This is ${element}</p>
#end
输出结果:
1. This is velocity
2. This is freemarker
3. This is jsp
Velocity 引擎会将 list 中的值循环赋给 element 变量,同时会创建一个 $velocityCount 的变量作为计数,从 1 开始,每次循环都会加 1。
另外,Velocity 中还提供了得到循环次数的方法, $velocityCount 变量的名字是 Velocity 默认的名字。
#foreach($i in [1..3])
$i
#end
输出结果:
1 2 3
#if($condition > 5)
<p>condition > 5</p>
#elseif($condition == 5)
<p>condition = 5</p>
#else
<p>condition < 5</p>
#end
输出结果:
condition = 5
Velocity 引擎提供了 AND、OR 和 NOT 操作符,分别对应 && 、|| 和 ! 。
#set($a=true)
#set($b=false)
#if($a && $b)
This is all true.
#end
Velocity 中的宏可以理解为函数定义。
(1)宏的定义:
#macro(宏的名称 $参数1 $参数2 ...)
语句体(即函数体)
#end
(2)宏的调用:
#宏的名称($参数1 $参数2 ...)
注意:参数之间用空格隔开
(3)示例:
#macro(func $args1 $args2)
This is a macro. The argument have ${args1} and ${args2}.
#end
#func("hello" "world")
输出结果:
This is a macro. The argument have hello and world.
#parse 与 #include 指令的功能都是在外部引用文件,而两者的区别是,#parse 会将引用的内容当成类似于源码文件,会将内容在引入的地方进行解析,#include 是将引入文件当成资源文件,会将引入内容原封不动地以文本输出。
示例:
foo.vm 文件:
#set($name="velocity")
$name
(1)parse.vm 文件:
#parse("foo.vm")
输出结果:
velocity
(2)include.vm 文件
#include("foo.vm")
输出结果:
#set(name=”velocity”) name
转载于:https://www.cnblogs.com/Jimc/p/9789655.html
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/159035.html原文链接:https://javaforall.cn