(1)if和foreach的用法:
#if($errors.exist())
<ul>
<span class="error">
#foreach ($e in $errors.all )
$e
#end
</span>
</ul>
#end
<!-- if和foreach的用法 -->
#if($message || $errors.exist())
<div id="tip" class="fade">
<ul><li><span class="pass">$!{message}</span></li></ul>
#if($errors.exist())
<ul>
<span class="error">
#foreach ($e in $errors.all )
$e
#end
</span>
</ul>
#end
</div>
#end
(2)set的用法:
#set( $this = "Velocity")
$this is great!
#end
页面输出Velocity is great!
(3)<!-- 条件判断 -->
#set( $condition = true)
#if ($condition)
The condition is true!
#else
The condition is false!
#end
<!-- 条件语句 -->
#if(condition)
#elseif(condition)
#else
#end
(4)<!-- 循环语句 -->
#foreach ($element in $list)
This is $element.
$velocityCount [Page]
#end
例子:
#set( $list = [/"pine/", /"oak/", /"maple/"])
#foreach ($element in $list)
$velocityCount
This is $element.<br>
#end
输出的结果为:
1 This is pine.
2 This is oak.
3 This is maple.
(5)<!-- 变量的写法 -->
${name}=/"hello/"
变量的定义:
#set($name = /"hello/") 说明:velocity中变量是弱类型的。
(6)<!-- Velocity中的内置对象 -->
Velocity内置了一些对象,在vm模版里可以直接调用,列举如下:
$request、$response、$session,另外,模板内还可以使用 $msg内的消息工具访问 Struts 的国际化资源,达到简便实现国际化的方法。
(7)<!-- 数组访问 -->
对数组的访问在Velocity中存在问题,因为Velocity只能访问对象的方法,而数组又是一个特殊的Array,所以虽然数组可以进行循环列举,但却不能定位访问特定位置的元素,如 strs[2],数组对固定位置元素的访问调用了Array的反射方法get(Object array, int index),而Velocity没能提供这样的访问,所以数组要么改成List等其他类容器的方式来包装,要么就通过公用Util类的方式来提供,传入数组对象和要访问的位置参数,从而达到返回所需值的目的。
(8)<!-- 语句的嵌套 -->
#foreach ($element in $list)
## inner foreach 内循环
#foreach ($element in $list)
This is $element. $velocityCount <br>inner<br>
#end
## inner foreach 内循环结束
## outer foreach
This is $element.
$velocityCount <br>outer<br>
#end
(9)<!-- 注释 -->
1单行注释:
## This is a single line comment.
2多行注释:
#*
Thus begins a multi-line comment. Online visitors won’t
see this text because the Velocity Templating Engine will
ignore it.
*#
3文档格式:
#**
This is a VTL comment block and
may be used to store such information
as the document author and versioning
information:
@version 1.1
@author xiao
*#
(10)<!-- 关系和逻辑操作符 -->
Velocity 也具有逻辑AND, OR 和 NOT 操作符。
如
## example for AND
#if($foo && $bar)
<strong> This AND that</strong>
#end
例子中#if() 指令仅在$foo 和$bar 斗为真的时候才为真。如果$foo 为假,则表达式也为假;并且 $bar 将不被求值。如果 $foo 为真,Velocity 模板引擎将继续检查$bar的值,如果 $bar 为真,则整个表达式为真。并且输出This AND that 。如果 $bar 为假,将没有输出因为整个表达式为假。