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

指令是以#开头,后面紧跟一个关键字,比如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. C# 7.0 新特性:本地方法

    C# 7.0:本地方法 VS 2017 的 C# 7.0 中引入了本地方法,本地方法是一种语法糖,允许我们在方法内定义本地方法.更加类似于函数式语言,但是,本质上还是基于面向对象实现的. 1. 本地方 ...

  2. binary

    模块说明 函数经过优化,比等价Erlang实现(比如位语法)更快,更节省内存 大部分可用位语法等价实现 模块的实现根据EEP(Erlang Enhancement Proposal)31 模块只处理面 ...

  3. oracle基本查询语句总结

    spool E:\基本查询.txt 将命令行的语句写入到指定的目下的指定的文件中 host cls 清屏命令 show user 显示当前操作的用户 desc emp 查看表结构 select * f ...

  4. 有人提了一个问题:一定要RESTful吗?

    写在前面的话 这个问题看起来就显得有些萌,或者说类似的问题都有些不靠谱,世上哪有那么多一定的事情,做开发都不一定做多久呢,所以说如果你有这个疑问的话是真真有点儿不着调,不过可能也就是随口一问吧,没有深 ...

  5. 传统 HTML 表单数据的“整存整取”

    在日常开发中,涉及表单的处理司空见惯.过往,在取值和赋值的过程中,借助 jQuery 常常只是逐个控件进行操作,可惜这样开发效率并不高.那么能不能批量获取整个表单的值呢,以及批量为表单赋值. 一.取值 ...

  6. 极化码之tal-vardy算法(3)

    考完驾照,回来填坑 /doge/doge 前两节分别介绍了tal算法中的合并函数和信道操作两个部分,我们将高斯信道的应用放在最后一节来介绍. 在之前的介绍中,我们一直在一个前提下进行讨论--即输入字符 ...

  7. ASP.NET没有魔法——ASP.NET MVC IoC

    之前的文章介绍了MVC如何通过ControllerFactory及ControllerActivator创建Controller,而Controller又是如何通过ControllerBase这个模板 ...

  8. 【爬虫入门手记03】爬虫解析利器beautifulSoup模块的基本应用

    [爬虫入门手记03]爬虫解析利器beautifulSoup模块的基本应用 1.引言 网络爬虫最终的目的就是过滤选取网络信息,因此最重要的就是解析器了,其性能的优劣直接决定这网络爬虫的速度和效率.Bea ...

  9. redis3.2新功能--GEO地理位置命令介绍

    概述 redis3.2发布rc版本已经有一段时间了,估计RedisConf 2016左右,3.2版本就能release了.3.2版本中增加的最大功能就是对GEO(地理位置)的支持.说起redis的GE ...

  10. Linux下PHP连接MS SQLServer的办法

    Linux下PHP连接MS SQLServer的办法分析问题 本来PHP脚本读写SQLServer是没有什么问题的,在Apache for windows和Windows IIS下可以工作的很好,一般 ...