摘要:
引用的转义使用"\",指令的转义也是使用"\"。但是,指令的转义要比引用的转义复杂很多。例如:[代码]使用转义:[代码]此时,"\"和"#"结合,从而破坏了原本的#if(),而$foo作为判断条件,也不会被解析。所以上面这段代码,无论$foo是true还是false,结果都是如果使用两个"\":[代码]首先,#if前面的两个假定$foo是true,那么会输出"Go!",并且是紧跟在刚才的"\"后面... 阅读全文
摘要:
引用的转义使用"\",指令的转义也是使用"\"。但是,指令的转义要比引用的转义复杂很多。例如:[代码]使用转义:[代码]此时,"\"和"#"结合,从而破坏了原本的#if(),而$foo作为判断条件,也不会被解析。所以上面这段代码,无论$foo是true还是false,结果都是如果使用两个"\":[代码]首先,#if前面的两个假定$foo是true,那么会输出"Go!",并且是紧跟在刚才的"\"后面... 阅读全文
摘要:
定义宏和使用宏#macro指令用于定义一个VTL模板的重复代码块——宏。下面是一个简单的定义宏的例子:[代码]这段代码定义了一个宏,名字为d,没有参数。下面是使用这个宏的代码:[代码]Velocity在遇到#d()的时候,会用"<tr><td></td></tr>"替代上面的#d()这一行。宏的参数:宏也可以带参数,而且是任意... 阅读全文
摘要:
#Include和#Parse都是用于将本地文件引入当前文件的指令,而且被引入的文件必须位于TEMPLATE_ROOT。这两者之间有一些区别。#Include被#Include引入的文件,其内容不会被Velocity引擎解析,所以这些文件应该是静态模板,即不含有VTL的模板。使用#Include()指令时,参数是被双引号括起来的文件名或者是表示文件名的变量。如果有多个文件,以逗号隔开即可。比如#I... 阅读全文
摘要:
首先是#foreach的简单示例:[代码]上面这个例子中,$allElems可以是一个Vector,一个HashTable,一个数组。在Velocity中,有一个变量$velocityCount用作循环计数,初始值是1。这个变量的名字和初始值是在velocity.properties文件里配置的。下面是更多的几个例子:[代码][代码] 阅读全文
摘要:
下面是#If指令的一个简单而完整的示例:#if指令用于判断某个条件是否为true。以上面的代码为例,当$foo < 10为true时,将会显示"Go North"。有时会看到这样一种写法:#if($foo) ... #end。这里充当判断条件的是一个变量$foo,它在两种情况下是true:一是$foo作为布尔值(Boolean)并且其值为true,二是$foo是一个非布尔值并且值不为null... 阅读全文
摘要:
引用可以让模板设计者生成动态内容,而指令允许设计者真正的负责页面的展现和内容。指令是以#开头,后面紧跟一个关键字,比如if,else,foreach等。而这个关键字,是可以被放在{}中间的。这是规范的写法,但是可能不好看。#set#set指令用于向一个变量或者属性赋值。其格式为 #set($foo="bar")或者#set($foo.bar=$test) 。LHS必须是一个变量或者属性,RHS必须... 阅读全文
摘要:
Velocity是大小写敏感的。但是为了减少使用者的错误,某些地方存在特殊情况。比如$foo.bar,首先会被检查是否能匹配$foo.getbar(),再被检查是否能匹配$foo.getBar()。而$foo.Bar,首先会被检查是否能匹配$foo.getBar(),再被检查是否能匹配$foo.getbar()。正如在《Velocity(2)——引用》所提到的那样,属性不会... 阅读全文
摘要:
货币符号:$是美元的符号,在文本中出现的"$2.5"这样的字符串,是不会被Velocity解释为一个变量或者一个属性的,因为2.5或者2或者5都不是一个VTL标识符。转义:假如需要在文本中最后显示"$foo"这四个字符组成的字符串本身,而非变量$foo的值,可以使用转义字符(\)。假定$foo已经定义过了,那么:[代码]假如$foo没有定义,那么:[代码] 阅读全文
|