Velocity语法

Velocity 语法概要

在Velocity中所有的关键字都是以 # 开头的,而所有的变量则是以 $ 开头。下面是具体的语法规则。

注释

  1. 单行注释
    ## 这是单行注释
    ## $department.departmentName
    
  2. 多行注释
    #*
     这是多行注释
    *#
    
    #*
     $department.departmentName
    *#
    
  3. 文档格式注释
    #**
     这是文档格式注释
    **#
    
    #**
     $department.departmentName
    **#
    

变量

在Velocity中也有变量的概念,使用 $ 符声明变量,可以声明变量也可以对变量进行赋值(变量是弱类型的)。另外还可以使用$取出在VelocityContext容器中存放的值

#set(${!name} = "velocity")
#set(${!foo} = $bar)
#set($foo ="hello")
#set($foo.name = $bar.name)
#set($foo.name = $bar.getName($arg))
#set($foo = 123)
#set($foo = ["foo",$bar])

注意变量定义语句为#set($),上面代码中 ! 的 写 法 , 使 用 !{}的写法,使用 !使vari获取变量时,如果变量不存在,Velocity引擎会将其原样输出,通过使用$!{}的形式可以将不存在的变量变成空白输出.

循环

在Velocity中可以使用循环语法遍历集合,语法结构如下:

#*
 循环
 $list:遍历的集合
 $item:集合中的每个项
 $velocityCount:集合索引
*#
#foreach($item in $list)
 $item
 $velocityCount 
#end

velocityCount是Velocity提供的用来记录当前循环次数的计数器,默认从1开始计数,可以在velocity.properties文件中修改其初始值

条件控制语法

在Velocity中可以使用条件语法对流程进行控制

#if(condition)
...dosonmething...
#elseif(condition)
...dosomething...
#else
...dosomething...
#end

例如:

#if($!tradeOrderInfo.paymentType == 1)
	第三方支付
#elseif($!tradeOrderInfo.paymentType == 2)
	支付宝
#elseif($!tradeOrderInfo.paymentType == 3)
	微信
#elseif($!tradeOrderInfo.paymentType == 10)
	银行卡
#else
	余额
#end

在Velocity中也有宏的概念,可以将其作为函数来理解,使用#macro声明宏
① 宏的定义

#macro(宏的名称 $参数1 $参数2)
       语句体(即函数体)
#end

② 宏的调用

#宏的名称($参数1 $参数2)
    说明:参数之间用空格隔开。

例如:

#macro(gender $gender)
	#if($!gender=="M")
    男
	#elseif($gender=="F")
    女
	#else
    其他
	#end
#end

#gender($!passenger.gender)

关系和逻操作符

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 为假,不输出 This AND that。

parse和include指令

在Velocity中可以通过parse或者include指令引入外部vm文件,但是二者存在区别:#parse只能指定单个对象,而#include可以指定多个,如果您需要引入多个文件,可以用逗号分隔就行。#include被引入文件的内容将不会通过模板引擎解析;而#parse引入的文件内容Velocity将解析其中的velocity语法并移交给模板。

#parse("/profit/lineChart.vm")
#include("/pay/CommonPayPage.vm")

内置对象

Velocity内置了一些对象,在vm模版里可以直接调用,列举如下:
request、request、request、response、$session,另外,模板内还可以使用 $msg内的消息工具访问 Struts 的国际化资源,达到简便实现国际化的方法。

数组

对数组的访问在Velocity中存在问题,因为Velocity只能访问对象的方法,而数组又是一个特殊的Array,所以虽然数组可以进行循环列举,但却不能定位访问特定位置的元素,如 strs[2] 这样的写法Velocity中是不存在。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值