文档章节

Velocity语法

shamgod_code
 shamgod_code
发布于 2016/10/16 19:33
字数 825
阅读 34
收藏 0

1.注释:

单行注释的前导符为“##”;

对于多行注释,则采用“#*”和“*#”符号。

2.引用:

在Velocity中,有3种类型的引用:变量、属性和方法。

  • 变量引用:

变量引用的简略标记为一个前导“$”后跟一个VTL标识符。VTL标识符可由字母、数字、中划线和下划线组成。

给引用变量赋值有两种方法:Java代码中给变量赋值和在模板中通过#set指令给变量赋值。#set( $foo = "bar") 

  • 属性引用

属性引用的简略标记为一个前导"$"后跟一个VTL标识符,后面再跟一个点号("."),最后跟一个VTL标识符。如$client.phone。

  • 方法引用

方法在Java代码中定义,VTL中方法引用的简略标记为前导符"$"后跟一个VTL标识符,再跟一个点号".",最后跟方法体。如$customer.getAddress()。

  • 正式引用符

如${client}格式。Jack is a ${vice}maniac。正式引用符常用在引用变量和普通文本直接临近的地方。

  • 安静引用符

当Velocity遇到一个未赋值的引用时,会直接输出这个引用的名字。实际中遇到这种情况我们希望显示空白域。此时使用安静引用符就可以达到目的。安静引用符的前导字符为"$!",如$!{email}。

  • 转义符

VTL中的"$"具有特殊的含义。如果希望把"$"作为普通的字符来处理,应该采用"\$"形式,其中"\"为转义符。

例如$set ($email = "foo")

$email

\$email

\\$email

\\\$email

以上代码的输出结果为:

foo

$email

\foo

\$email

3.指令:

  • #set指令

#set( $primate = "monkey")

#set( $people.say = ["yes","no",$primate])

  • 字面字符串

当使用#set指令时,在双引号中的字面字符串将被解析。

当字面字符串被包括在单引号中时,将不被解析。例如:

#set ( $foo = "bar")

$foo

#set ( $blargh = '$foo')

$blargh

以上代码的输出结果为:

bar

$foo

  • #if指令

#if( $foo)

    <strong>Velocity!</strong>

#end

当$foo是一个逻辑类型变量并且值为true或$foo的值非空时,if条件为真。

当$foo是一个逻辑类型变量并且值为false或$foo的值为null时,if条件为假。

在#if语句中还可以包含#elseif和#else项,并且Velocity引擎将在遇到第一个为真的表达式时停止逻辑判断。

  • 比较运算

在if条件表达式中,Velocity支持3种变量类型的比较运算:字符串比较、对象比较和整数比较。

字符串比较:字符串比较使用操作符"=="来决定两个字符串的内容是否相同。

对象比较:对象比较使用操作符"=="。只有当等号两边的引用变量引用同一个对象时,比较结果才为true。

整数比较:Velocity目前只支持整数类型数据的比较。#if( $a==10), #if( $a>10), #if( $a<10)。

  • #foreach循环指令

#foreach($client in $clientList)

    <tr><td>$client.firstname</td><td>$client.lastname</td><td>$client.phone</td></tr>

#end

  • #include指令

#include指令用来导入本地文件,这些文件将被插入到模板中#include指令被定义的地方。#include("head.htm",$page,"footer.htm")。

  • #parse指令
  • #macro指令
  • 转义VTL指令
  • VTL的格式

4.其他特征:

  • 数学运算
  • 范围操作符
  • 字符串的连接

 

© 著作权归作者所有

shamgod_code
粉丝 5
博文 82
码字总数 31063
作品 0
杭州
私信 提问
改造Velocity模板引擎让$[!]{}输出默认进行html转义,并增加$#{}语法支持不转义输出

一直以来在项目中使用Apache Velocity模板引擎作为视图层输出,为了解决XSS漏洞,需要对输出到页面的内容进行HTML转义,我一般采用2种方式实现: 使用过滤器 Filter,在其中进行 HttpServle...

山哥
2014/11/04
0
0
Velocity初探小结--velocity使用语法详解

  做java开发的朋友一般对JSP是比较熟悉的,大部分人第一次学习开发View层都是使用JSP来进行页面渲染的,我们都知道JSP是可以嵌入java代码的,在远古时代,java程序员甚至在一个jsp页面上就完成...

冬至饮雪
2016/11/19
0
0
velocity模板扩展--vtree

vtree全称应该是:“velocity tree syntax” velocity:Java常用的一种模板渲染语法,或者说是模板引擎。 vtree除了对velocity语法树进行遍历执行渲染以外,还提供了xtool工具类,处理veloc...

summer
2013/10/22
1K
1
Java模板引擎 HTTL

HTTL(Hyper-Text Template Language)是一个高性能的开源JAVA模板引擎,适用于动态HTML页面输出,可替代JSP页面,指令和Velocity相似。 简洁友好的模板语法 语法尽可能符合HTML和JAVA开发者...

kevin728971010
2016/11/07
59
0
Java模板引擎--HTTL

HTTL(Hyper-Text Template Language)是一个高性能的开源JAVA模板引擎,适用于动态HTML页面输出,可替代JSP页面,指令和Velocity相似。 简洁友好的模板语法 语法尽可能符合HTML和JAVA开发者...

梁飞
2011/09/14
15K
5

没有更多内容

加载失败,请刷新页面

加载更多

IT兄弟连 Java语法教程 编写Java源代码

现在我们来一步一步的编写第一个Java程序,鼎鼎大名的“HelloWorld”。 编写Java源代码 编写Java源代码可以使用任何无格式的文本编辑器,在Windows操作系统上可以使用记事本、Edit Plus等程序...

老码农的一亩三分地
13分钟前
2
0
JavaScript箭头函数中的this详解

前言 箭头函数极大地简化了this的取值规则。 普通函数与箭头函数 普通函数指的是用function定义的函数: var hello = function () {console.log("Hello, Fundebug!");} 箭头函数指的是用...

开元中国2015
25分钟前
2
0
ETL测试工具简介

ETL测试 ETL测试过程与其他测试过程类似,包括一些阶段。 确定业务需求 测试计划 设计测试用例和测试数据 测试执行和错误报告 总结报告 测试结束 ETL测试的类型 生产验证测试: 也称为表平衡...

python测试开发人工智能安全
37分钟前
1
0
OSChina 周四乱弹 —— 不能空腹吃早餐

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @for_ :#今日歌曲推荐# 很好听的钢琴曲,节奏简单,有一点伤感。分享Fabrizio Paterlini的单曲《Veloma》: 《Veloma》- Fabrizio Paterlini ...

小小编辑
今天
1K
13
探讨android更新UI的几种方法

作为IT新手,总以为只要有时间,有精力,什么东西都能做出来。这种念头我也有过,但很快就熄灭了,因为现实是残酷的,就算一开始的时间和精力非常充足,也会随着项目的推进而逐步消磨殆尽。我...

天王盖地虎626
今天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部