引用可以让模板设计者生成动态内容,而指令允许设计者真正的负责页面的展现和内容。

指令是以#开头,后面紧跟一个关键字,比如if,else,foreach等。而这个关键字,是可以被放在{}中间的。这是规范的写法,但是可能不好看。

#set

#set指令用于向一个变量或者属性赋值。其格式为 #set($foo="bar")或者#set($foo.bar=$test) 。

LHS必须是一个变量或者属性,RHS必须是以下7种类型之一:变量、属性、字符串字面值、数字字面值、方法、ArrayList、Map。比如:

#set( $test = $test2 + 3)

#set( $test.a = "abc")

#set( $test.b = 1)

#set( $test.c = $test.a)

#set( $test.d = $test.calc("1+1"))

#set( $test.e = ["123", "abc", $test.c])          访问时使用$test.e.get(0)就可以获得值"123"

#set( $test.f = {"name":"car", "color":"red"})   访问时使用$test.f.get("color")就可以获得值"red"

默认情况下,RHS是null的话,将不会对LHS进行赋值,LHS会保持原来的值。所以一个引用一旦被创建,一般是无法移除的。但是可以修改Velocity的某个配置,改变这一现象。在#foreach里进行判断时,要特别注意。

在使用#set时,字符串的字面值如果放在双引号里,将会被解析。比如#set( $test.a = "abc"), 那么$test.a的值就是abc。而#set( $test.b = "$test.a")等价于#set( $test.b=$test.a )。但是#set( $test.b = '$test.a') 的结果却是把$test.a这个字符串字面值赋值给$test.b。

当遇到需要输出大量的字符串字面值,而不是输出它们的实际值的情况时,可以使用#literal() ... #end来包围VTL Code。

Velocity(3)——#set指令的更多相关文章

  1. Velocity(8)——引入指令和#Stop指令

    #Include和#Parse都是用于将本地文件引入当前文件的指令,而且被引入的文件必须位于TEMPLATE_ROOT.这两者之间有一些区别. #Include 被#Include引入的文件,其内容不 ...

  2. Velocity(6)——#if指令

    下面是#If指令的一个简单而完整的示例: #if ($foo < 10) Go North #elseif ($foo == 10) Go East #else Go West#end 不能漏掉 ...

  3. Velocity(5)——#set指令

    引用可以让模板设计者生成动态内容,而指令允许设计者真正的负责页面的展现和内容. 指令是以#开头,后面紧跟一个关键字,比如if,else,foreach等.而这个关键字,是可以被放在{}中间的.这是规范 ...

  4. Velocity中#set指令

    引用可以让模板设计者生成动态内容,而指令允许设计者真正的负责页面的展现和内容. 指令是以#开头,后面紧跟一个关键字,比如if,else,foreach等.而这个关键字,是可以被放在{}中间的.这是规范 ...

  5. Velocity(4)——引入指令和#Parse 指令

    #Include和#Parse都是用于将本地文件引入当前文件的指令,而且被引入的文件必须位于TEMPLATE_ROOT.这两者之间有一些区别. #Include 被#Include引入的文件,其内容不 ...

  6. Velocity(7)——#foreach指令

    首先是#foreach的简单示例: #foreach( $elem in $allElems) $elem</br> #end 上面这个例子中,$allElems可以是一个Vector,一 ...

  7. Velocity(5)——#macro 指令

    1 #macro(formatIncreaseData $increase) 2 #if(${product.onlineStatusFlag} =='0') 3 -- 4 #elseif(!$inc ...

  8. Velocity工作原理解析和优化

    在MVC开发模式下,View离不开模板引擎,在Java语言中模板引擎使用得最多是JSP.Velocity和FreeMarker,在MVC编程开发模式中,必不可少的一个部分是V的部分.V负责前端的页面展 ...

  9. 《Apache Velocity用户指南》官方文档

    http://ifeve.com/apache-velocity-dev/ <Apache Velocity用户指南>官方文档 原文链接   译文连接 译者:小村长  校对:方腾飞 Qui ...

随机推荐

  1. sqlserver常用sql语句,更改字段,建立唯一键,多个字段去重复等

    --修改字段类型: --alter table 表名 alter column 待修改字段名 待修改字段类型 alter table users alter column userid varchar ...

  2. JS判断浏览器类型与版本

    在JS中判断浏览器的类型,估计是每个编辑过页面的开发人员都遇到过的问题.在众多的浏览器产品中,IE.Firefox.Opera.Safari........众多品牌却标准不一,因此时常需要根据不同的浏 ...

  3. 使用Canvas制作时钟动画

    复习Javascript到Canvas的知识点,看到一个使用Canvas绘制的静态时钟例子,便想将其变成动态显示系统时间的时钟动画.另外再配上数字显示的时钟,一个小的时钟模块的诞生了!目前的界面还比较 ...

  4. Echarts数据可视化series-map地图,开发全解+完美注释

    全栈工程师开发手册 (作者:栾鹏) Echarts数据可视化开发代码注释全解 Echarts数据可视化开发参数配置全解 6大公共组件详解(点击进入): title详解. tooltip详解.toolb ...

  5. php+openresty 部署安装

    1. ecs 购买 地域: 华北 2 可用区: 随机分配 安全组 ID: sg-2533jog6k I/O 优化实例: I/O 优化实例 实例规格: 1 核 1GB 网络类型: 经典网络 带宽: 1M ...

  6. word2vec 数学原理

    word2vec 是 Google 于 2013 年推出的一个用于获取词向量的开源工具包.我们在项目中多次使用到它,但囿于时间关系,一直没仔细探究其背后的原理. 网络上 <word2vec 中的 ...

  7. Docker部属Nsq集群

    用一了段时间NSQ还是很稳定的.除了稳定,还有一个特别值的说的就是部署非常简单.总想写点什么推荐给大家使用nsq来做一些东西.但是就是因为他太简单易用,文档也比较简单易懂.一直不知道要写啥!!!!! ...

  8. Unix时代的开创者Ken Thompson

    自图灵奖诞生以来,其获得者一直都是计算机领域的科学家与学者,而在所有这些界的图灵奖中只有唯一的一届有个例外,那就是Ken Thompson与Dennis M. Ritchie,他们都是计算机软件工程师 ...

  9. Android+ESP8266+路由器实现远程控制(基于花生壳域名方式访问)

    x先说一下实现的功能,其实就是远程控制 和这篇文章的控制  http://www.cnblogs.com/yangfengwu/p/5295632.html   应该说是这篇文章的升级,解决这篇文章由 ...

  10. 树莓派.GPRS.短信接收器

    起因 曾经用过西门子出的短信猫, 好处是直接有SDK开发包, 不会硬件开发也能直接使用 缺点也是明显的, 就是只支持Windows系统, 另外就是在Windows下工作很不稳定, 隔开几天就会出现收不 ...