velocity基本语法

1.赋值

#set ( $foo = “Velocity” )

Hello $foo World!

2.注释

## This is a single line comment.  -----------单行注释

#*

Thus begins a multi-line comment. Online visitors won’t

see this text because the Velocity Templating Engine will

ignore it.

*#------------------多行注释

#**

This is a VTL comment block and

may be used to store such information

as the document author and versioning

information:

@version 5

@author

*#-----------------文档格式

3.相关方法

$customer.getAddress()------等同于$customer.address

$purchase.getTotal()----------$purchase.total

$page.setTitle( “My Home Page” )-----对应于page对象中的set方法

示例:

demo1.---------------

$person.setAttributes( [“Strange”, “Weird”,“Excited”] )

$data.getUser(“jon”)

##is the same as

$data.User(“jon”)

demo2:-------------

$data.getRequest().getServerName()

#is the same as

$data.Request.ServerName

##is the same as

${data.Request.ServerName}

4.reference的正式格式:

     ${mudSlinger}变量

     ${customer.Address}属性

    ${purchase.getTotal()}方法

例:

#set ( $foo = “Velocity” )

Hello $foo World!

  java is a ${foo}Demo

5.表单中初始化为空时:

<input type='text' name='email' value='$email' />

当页面的form被初始加载时,变量$email还没有值,这时你肯定是希望它能够显示一个blank text来代替输出”$email”这样的字段。那么使用quiet reference notation就比较合适。

<input type='text' name='email' value='$!email' (或者$!email{})/>

这样文本框的初始值就不会是email而是空值了。

6.转义符'\'

#set( $email = “foo” )

$email

\$email

\\$email

\\\$email

显示结果:

foo

$email

\foo

\\$email

7.#set ( $resut = $query.criteria(“name”))

The result of the first query is $result

#set ( $resut = $query.criteria(“address”) )

The result of the second query is $result

如果$query.criteria(“name”)返回一个“bill”,而$query.criteria(“address”)返回的是null,则显示的结果如下:

The result of the first query is bill

The result of the first query is bill

8.赋值中注意单引号的使用

#set($foo1 = 'hello')

#set($foo2 = '$foo1')

$foo1

$foo2

结果:

hello

$foo1

想要第二个也能正常赋值,用双引号代替,即#set($foo2="$foo1")

9.if/else/elseif

#if($foo < 10 )

Go North

#elseif( $foo == 10 )

Go East

#elseif( $foo == 6 )

Go South

#else

Go West

#end

Velocity中使用"=="判断两个数字是否相等

现在我们假设$allProducts是一个Hashtable,如果你希望得到它的key应该像下面这样:

    #foreach ( $key in $allProducts.keySet())

    <li>Key: $key -> Value:$allProducts.get($key)</li>

    #end

    10.$velocityCount变量(foreach循环的计数器)

    $velocityCount变量的名字是Velocity默认的名字,你也可以通过修改velocity.properties文件来改变它。默认情况下,计数从“1”开始,但是你可以在velocity.properties设置它是从“1”还是从“0”开始。下面就是文件中的配置:

    #Default name of loop counter

    #variable reference

    directive.foreach.counter.name = velocityCount

    #Default starting value of the loop

    #counter variable reference

    directive.foreach.counter.initial.value = 1

    11.#include,#parse接受一个变量而不是一个模板。任何由#parse指向的模板都必须包含在TEMPLATE_ROOT目录下。与#include不同的是,#parse只能指定单个对象。

    你可以通过修改velocity.properties文件的parse_direcive.maxdepth的值来控制一个template可以包含的最多#parse的个数――默认值是10。#parse是可以递归调用的,例如:如果dofoo.vm包含如下行:

    Count down.

    #set ( $count = 8 )

    #parse ( “parsefoo.vm” )

    All done with dofoo.vm!

    那么在parsefoo.vm模板中,你可以包含如下VTL:

    $count

    #set ( $count = $count – 1 )

    #if ( $count > 0 )

    #parse( “parsefoo.vm” )

    #else

    All done with parsefoo.vm!

    #end

    的显示结果为:

    Count down.

    8

    7

    6

    5

    4

    3

    2

    1

    0

    All done with parsefoo.vm!

    All

    done with dofoo.vm!l

    最后编辑于
    ©著作权归作者所有,转载或内容合作请联系作者
    • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
      沈念sama阅读 214,658评论 6 496
    • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
      沈念sama阅读 91,482评论 3 389
    • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
      开封第一讲书人阅读 160,213评论 0 350
    • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
      开封第一讲书人阅读 57,395评论 1 288
    • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
      茶点故事阅读 66,487评论 6 386
    • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
      开封第一讲书人阅读 50,523评论 1 293
    • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
      沈念sama阅读 39,525评论 3 414
    • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
      开封第一讲书人阅读 38,300评论 0 270
    • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
      沈念sama阅读 44,753评论 1 307
    • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
      茶点故事阅读 37,048评论 2 330
    • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
      茶点故事阅读 39,223评论 1 343
    • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
      沈念sama阅读 34,905评论 5 338
    • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
      茶点故事阅读 40,541评论 3 322
    • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
      开封第一讲书人阅读 31,168评论 0 21
    • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
      开封第一讲书人阅读 32,417评论 1 268
    • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
      沈念sama阅读 47,094评论 2 365
    • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
      茶点故事阅读 44,088评论 2 352

    推荐阅读更多精彩内容

    • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
      卡卡罗2017阅读 134,646评论 18 139
    • 【一】 度假回来上班的第一天,我的荷花尽数枯萎。 鱼缸又空了,于是跑去菜场买了四尾鱼。 两红两黑,红的配红的,黑的...
      迷糊的谜阅读 420评论 0 0
    • 一次性把事情做好,相信不少人对这样的看法不以为然,认为没必要把身边每一件事情都做的那么完美。 记得有一次广场的领导...
      潍坊谷德DD李玉苹阅读 716评论 0 0
    • 你是否想要开始运动,却迟迟没有行动? 你是否曾经运动过,却最终没有坚持下来? 你是否想要重新来过? 如果你长时间没...
      遇见海星阅读 683评论 0 5
    • 听说外面的世界很精彩 我想出去看看 可妈妈说外面的坏人很多 说它们并不友善 可我认为并不像她说的 我要自己去看一看...
      idea伟阅读 183评论 0 6