velocity参数重新赋值_velocity(vm)模板引擎基本语法

本文介绍了Velocity模板引擎的基本语法,包括变量、循环、条件语句、注释、关系和逻辑操作符、宏定义、#stop、#include和#parse的使用。还讨论了如何进行变量赋值、数组访问以及如何处理变量不存在的情况。通过示例展示了如何在模板中进行条件判断、循环遍历和嵌套使用。
摘要由CSDN通过智能技术生成

for循环

#foreach($acc in $!{param.tools})

#set($count = $count + 1)

$!{acc.accountName} 可用余额 $!{acc.balance}元

#endif条件语句

#if(${supportWorkerPay})

#end

form表单提交

$("#pursePayForm").submit();

嵌套vm

#parse(parsefoo.vm)

velocity三种reference

变量:对java对象的一种字符串化表示,返回值调用了java的toString()方法的结果。

方法:调用的是对象的某个方法,该方法必须是public的,返回值也是toString(),方法的参数也必须为String的。

属性:除了访问java的类属性外,等价于get..()方法。

基本符号

1、“#”来标识velocity的脚本语句。

2、“$”来标识一个对象(或者变量)。

3、“{}”用来标识velocity变量。

4、“!”用来强制把不存在的变量显示为空白。

5、用双引号还是单引号表示,默认“”,可以在stringliterals.interpolate=false改变默认处理方式

基本语法

1、 变量

(1) 变量定义

#($name="hello")

#($templateName = "index.vm")

#set($template = "$directoryRoot/$templateName")

#template

(2)变量规范

${name},也可以写成$name

但一般情况下使用${name}

注意:当引用属性的时候不能加{}

(3)变量赋值

$name ="hello"

左侧:

为变量或者属性的引用。

右侧:

变量引用、字面字符串、属性引用、方法引用、字面数字、数组列表。

#set($monkey = $bill)  ##变量引用

#set( $monkey.Friend = "monica" ) ## 字符串引用

#set($monkey.Blame = $spindoctory.weave($web) ## 方法引用

#set($monkey.Number = 123) ## 数字引用

#set($monkey.Say = ["Not",$my,"fault"] ##数组列表

ps:

1、右值是null,则左侧不会被赋值,会保留原来的值。

2、velocity 模板中未被定义的将被认为是一个字符串。

#set($foo ="gibbous")

$moon = $foo

输出结果为$moon=gibbous

3、velocity模板中不会解释为对象的实例变量。

例如

$foo.getBar() 等同于$foo.Bar;

$data.getUser("jon") 等同于 $data.User("jon");

data.getRequest().getServerName()等同于$data.Request.ServerName等同于$(data.Request.ServerName)

2、循环

#foreach($element in $list)

This is $element

$velocityCount

#end

例如:

#set($list=["pine","oak","maple"])

#foreach($element in $list)

$velocityCount

This is $element.

#end

输出结果为:

$list 可以为Vector、Hashtable、Array。分配给$element 的值是一个java对象,并且可以通过变量被引用。

例如

#foreach($key in $list.keySet)

Key: $key--->value: $list.get($key)

#end

Velocity 还提供了循环次数的方法,$velocityCouont变量的名字是Velocity默认的名字,表示循环到第几次了。

例如

#foreach($foo in [1,2,3,4,5])

$foo

#end

#foreach($bar in [2,1,0,-1,-2])

$bar

#end

#set($arr=[0,1])

#foreach($i in $arr)

$i

#end

输出结果如下:

3、条件语句

#if(condition)

#elseif(condition)

#else

#end

例如:

#set($arr=["jiayou","jiayou2","jiayou3"])

#foreach($element in $arr )

#if($velocityCount==1)

jiayou

#elseif($velocityCount==2)

jiayou2

#else

jiayou3

#end

#end

输出结果:

4、语句嵌套

#foreach($element in $list)

#foreach($element in $list)

this is $element .$velocity
inner

#end

this is $element.$velocity
out

#end

5、注释

单行注释:##this is single

多行注释:#*  .........*#

文档格式:#**.............*#

6、关系和逻辑操作符

&& == || !

#if($foo && $bar)

This AND that

#end

7、velocity中的宏

Velocity中的宏我们可以理解为函数。

①宏的定义

#macro(宏的名称 $参数1 $参数2 …)

语句体(即函数体)

#end

②宏的调用

#宏的名称($参数1 $参数2 …)

说明:参数之间用空格隔开。

8、#stop

停止执行模板引擎并返回,应用于debug很有帮助。

9、$include和#parse

#include和#parse的作用都是引入本地文件,为了安全,被进入的文件只能在Template_root目录下。

这两个引入区别:

1)#include可以引入多个文件。例如:#include("one.gif","two.txt","three.html")

#parse只能引入指定的单个对象。例如:#parse("layout/index.vm")

2)#include引入的文件内容不会被velocity模板引擎解析。

#parse引入的文件内容,将解析其中的velocity并交给模板,相当于把引入的文件内容copy到文件中。

3)#parse是可以递归调用的。

例如:

调用者

dofoo.vm中代码:

count down.

#set($count= 8)

#parse(parsefoo.vm)


all done with diao yong parsefoo.vm.

parsefoo.vm中代码:

$count

$set($count = $count - 1)

#if($count>0)

#parse("parsefoo.vm")  ##自己调用自己

#else


递归调用结束

#end

输出结果:

注:

使用#parse来嵌套另一个vm页面时,变量共享问题,如:

a.vm 中嵌套了b.vm

a.vm中使用了变量$param;

b.vm里可直接使用$param.

但其中一个定义了,则使用它自己定义的那个同名变量。

10、转义字符

当变量被定义的时候,两个\\代表一个\,如果未被定义,则按照原样输出。

例如:

11、内置对象

velocity内置了一些对象,在vm中可以直接调用。例如

$request、$response、$session,使用$msg内的消息工具访问struts的国际化资源,达到简便实现国际化方法。

12、数组访问

数组要改成list等其他类容器方式来包装。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值