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
看看下面的例子:
#set( $criteria = ["name", "address"] )
#foreach( $criterion in $criteria )
#set( $result = $query.criteria($criterion) )
#if( $result )
Query was successful
#end
#end
在上面的例子中,程序将不能智能的根据$result的值决定查询是否成功
。在$result被#set后(added to the context),它不能被设置回null(removed from the context)。打印的结果将显示两次查询结果都成功了,但是实际上有一个查询是失败的。
为了解决以上问题我们可以通过预先定义的方式:
#set( $criteria = [“name”, “address”] )
#foreach( $criterion in $criteria )
#set( $result = false )
#set( $result = $query.criteria( $criterion ) )
#if( $result )
Query was successful
#end
#end
String Literals
当你使用#set directive,String literal封闭在一对双引号内。
#set ( $Director
yRoot = “www” )
#set ( $templateName = “index.vm” )
#set ( $template = “$directoryRoot/$tempateName” )
$template
上面这段代码的输出结果为:www/index.vm
但是,当string literal被封装在单引号内时,它将不被解析:
#set ( $foo = “bar” )
$foo
#set ( $blargh = ‘$foo’ )
结果:
bar
$foo
上面这个特性可以通过修
改velocity.properties文件的stringliterals.interpolate = false的值来改变上面的特性是否有效。
条件语句
if/elseif/else
当一个web页面被生成时使用Velocity的#if directrive,如果条件成立的话可以在页面内嵌入文字。例如:
#if ( $foo )
<strong>Velocity!</strong>
#end
上例中的条件语句将在以下两种条件下成立:
l$foo是一个boolean型的变量,且它的值为true
l$foo变量的值不为null
这里需要注意一点:Velocity context仅仅能够包含对象,所以当我们说“boolean”时实际上代表的时一个Boolean对象。即便某个方法返回的是一个boolean值,Velocity也会利用内省机制将它转换为一个Boolean的相同值。
如果条件成立,那么#if和#end之间的内容将被显示。
#elseif和#else元素可以同#if一同使用。例如:
#if( $foo < 10 )
<strong> Go North </strong>
#elseif( $foo == 10 )
<strong> Go East </strong>
#elseif( $foo == 6 )
<strong> Go South </strong>
#else
<strong> Go West </strong>
#end
注意这里的Velocity的数字是作为Integer来比较的——其他类型的对象将使得条件为false,但是与java不同它使用“==”来比较两个值,而且velocity要求等号两边的值类型相同。
关系、逻辑运算符
Velocity中使用等号操作符判断两个变量的关系。例如:
#set ( $foo = “deoxyribonucleic acid” )
#set ( $bar = “ribonucleic acid” )
#if ( $foo == $foo )
In this case it’s clear they aren’t equivalent.So…
#else
They are not equivalent and this will be the output.
#end
Velocity有AND、OR和NOT逻辑运算符。下面是一些例子:
## logical AND
#if( $foo && $bar )
<strong> This AND that </strong>
#end
## logical OR
#if ( $foo $bar )
<strong>This OR That </strong>
#end
##logical NOT
#if ( !$foo )
<strong> NOT that </strong>
#end
循环
Foreach循环
例子:
<ul>
#foreach ( $product in $allProducts )
<li> $product </li>
#end
</ul>
每次循环$allProducts中的一个值都会赋给$product变量。
$allProducts可以是一个Vector、Hashtable或者Array。分配
给$product的值是一个java对象,并且可以通过变量被引用。例如:如果$product是一个java的Product类,并且这个产品的名字
可以通过调用他的getName()方法得到。
现在我们假设$allProducts是一个Hashtable,如果你希望得到它的key应该像下面这样:
<ul>
#foreach ( $key in $allProducts.keySet() )
<li>Key: $key -> Value: $allProducts.get($key) </li>
分享到:
相关推荐
这份中文版的Velocity用户手册将深入解析其语法和用法。 ** Velocity语法基础 ** 1. **变量引用**:在Velocity中,变量以$符号开头,例如 `$name`,表示要引用的变量。 2. **括号内引用**:如果变量名包含特殊...
这个用户手册中文版详细介绍了Velocity的使用方法和语法特性。 ** Velocity 的基本概念 ** 1. **模板(Template)**:模板是Velocity的核心,它是HTML或XML等静态页面中嵌入了Velocity指令的文件,用于生成最终的...
velocity手册_HTML版 内容简单 初学者的好东西
为了更好地使用Velocity,Velocity用户手册提供了详细的例子和说明。手册中包含了对VTL的详细介绍,比如变量的使用、控制结构的编写、指令的应用等,以帮助页面设计者和内容提供者快速熟悉和掌握Velocity的使用。...
【Velocity】 Velocity 是一个基于 Java 的模板引擎,它允许开发者使用模板语言(Template Language)来引用由 Java 代码定义的对象。其核心理念是将Java代码与HTML页面内容分离,促进MVC(Model-View-Controller)...
4. **Include** 指令用于插入其他模板,增强模板复用性。 5. **Parse** 指令用于解析并执行嵌入的 VTL 代码块。 6. **Stop** 指令用于终止当前模板的执行。 7. **Velocimacros** 是可重用的宏,可以简化模板编写,...
【Velocity 手册-中文版】是一份详细指导文档,主要面向页面设计者和内容提供者,介绍如何使用 Velocity 模板语言(VTL)来创建动态内容并将其嵌入到网页中。Velocity 是一个基于 Java 的模版引擎,它的核心功能是将...
velocity中文手册 Velocity 是一个基于java 的模板引擎(template engine)。它允许任何人仅仅简单的使 用模板语言(template language)来引用由java 代码定义的对象。
### Velocity手册核心知识点详解 #### 1. 什么是Velocity? Velocity是一种基于Java的模板引擎,它的主要作用是将Web页面设计者与Java程序员的工作区分开来,使得两者能够平行工作而不互相干扰。通过这种方式,Web...
【Velocity手册】深入解析 Velocity是一个强大的基于Java的模板引擎,其主要目的是将内容呈现与业务逻辑相分离,实现Model-View-Controller(MVC)架构。它使用一种称为Velocity Template Language (VTL) 的简单...
4. **可扩展性**: Velocity支持自定义指令和宏,可以轻松地扩展功能以满足特定需求。 5. **社区支持**: 作为Apache项目,Velocity有着丰富的文档和活跃的社区支持,遇到问题时可以得到及时的帮助。 **Velocity核心...
Velocity是一个基于Java的模板引擎,它主要被用来分离Java代码和Web页面。通过预定义的Java方法,Web设计者可以在页面设计过程中嵌入这些Java代码。与传统的MVC模式相结合,Web设计者和程序员可以并行工作,提高工作...
Velocity 是一个基于 Java 的模板引擎,它主要用于将静态页面内容与动态数据相结合,实现模板语言与 Java 代码的分离。Velocity 的核心理念是让界面设计人员专注于页面布局和样式,而将业务逻辑处理交给 Java 开发...
### Velocity用户手册精要 **一、Velocity简介与能力范畴** Velocity是一款强大的模板引擎,其功能远远超越了web站点开发的局限。它不仅能够用于创建动态网页,还具备生成SQL、PostScript、XML等各类文档的能力,...
以上就是从给定文件内容中提取的关于 Velocity 用户手册的知识点。这些知识点覆盖了 Velocity 的基本概念、使用方式以及模板语言 VTL 的核心内容,为理解 Velocity 的功能和应用提供了详细的指导。
【Velocity简介】 Velocity是一个基于Java的模板引擎,它的核心功能是将静态的HTML模板与动态的Java代码相分离,让网页设计人员专注于页面布局,而程序员则专注于业务逻辑的实现。Velocity允许通过模板语言...
4. **安全性强**:由于Velocity不直接执行Java代码,而是通过Velocity模板语言(VTL),降低了代码注入的风险。 **Velocity模板语言(VTL)** VTL是Velocity的核心,它提供了一系列指令和引用,用于在模板中控制...