- 浏览: 486675 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
fanxp:
很好,学习了!
mysql导入数据load data infile用法 -
maomao15:
...
(转) Class.getResource与ClassLoader.getResource()区别 -
贾懂凯:
有maven的配置吗?
Spring MVC整合Velocity的例子 -
kevinhrw:
一个好办法不知道使用"mvc:resources&q ...
Spring3.0 做rest时候拦截js、图片 -
love_miaohong:
这样子设置没作用啊, window7系统下用这个方式不行
MongoDB在windows操作系统cmd下乱码
#end
</ul>
Velocity还特别提供了得到循环次数的方法,以便你可以像下面这样作:
<table>
#foreach ( $customer in $customerList )
<tr><td>$velocityCount</td><td>$customer.Name</td></tr>
#end
</table>
$velocityCount变量的名字是Velocity默认的名字,你也可以通过修改 velocity.properties文件来改变它。默认情况下,计数从“1”开始,但是你可以在velocity.properties设置它是从 “1”还是从“0”开始。下面就是文件中的配置:
# Default name of loop counter
# variable reference
directive.foreach.counter.name = velocityCount
# Default starting value of the loop
# counter variable reference
directive.foreach.counter.initial.value = 1
include
#include script element允许模板设计者引入本地文件。被引入文件的内容将不会通过模板引擎被render。为了安全 的原因,被引入的本地文件只能在TEMPLATE_ROOT目录下。
#inclued ( “one.txt” )
如果您需要引入多个文件,可以用逗号分隔就行:
#include ( “one.gif”, “two.txt”, “three.htm” )
在括号内可以是文件名,但是更多的时候是使用变量的:
#inclue ( “greetings.txt”, $seasonalstock )
parse
#parse script element允许模板设计者一个包含VTL的本地文件。Velocity将解析其中的VTL并render模板。
#parse( “me.vm” )
就像#include,#parse接受一个变量而不是一个模板。任何由#parse指向的模板都必须包含在TEMPLATE_ROOT目录下。与#include不同的是,#parse只能指定单个对象。
你可以通过修改velocity.properties文件的parse_direcive.maxdepth的值来控制一个template可以包含的最多#parse的个数——默认值是10。#parse是可以递归调用的,例如:如果dofoo.vm包含如下行:
Count down.
#set ( $count = 8 )
#parse ( “parsefoo.vm” )
All done with dofoo.vm!
那么在parsefoo.vm模板中,你可以包含如下VTL:
$count
#set ( $count = $count – 1 )
#if ( $count > 0 )
#parse( “parsefoo.vm” )
#else
All done with parsefoo.vm!
#end
的显示结果为:
Count down.
8
7
6
5
4
3
2
1
0
All done with parsefoo.vm!
All done with dofoo.vm!
Stop
#stop script element允许模板设计者停止执行模板引擎并返回。把它应用于debug是很有帮助的。
#stop
Velocimacros
#macro script element允许模板设计者定义一段可重用的VTL template。例如:
#macro ( d )
<tr><td></td></tr>
#end
在上面的例子中Velocimacro被定义为d,然后你就可以在任何VTL directive中以如下方式调用它:
#d()
当你的template被调用时,Velocity将用<tr><td></td></tr>替换为#d()。
每个Velocimacro可以拥有任意数量的参数——甚至0个参数,虽然定义时可以随意设置参数数量,但是调用这个Velocimacro时必须指定正确的参数。下面是一个拥有两个参数的Velocimacro,一个参数是color另一个参数是array:
#macro ( tablerows $color $somelist )
#foreach ( $something in $somelist )
<tr><td bgcolor=$color>$something</td</tr>
#end
#end
调用#tablerows Velocimacro:
#set ( $greatlakes = [ “Superior”, “Michigan”, “Huron”, “Erie”, “Ontario” ] )
#set ( $color = “blue” )
<table>
#tablerows( $color $greatlakes )
</table>
经过以上的调用将产生如下的显示结果:
<table>
<tr><td bgcolor=” blue”> Superior </td></tr>
<tr><td bgcolor=” blue”> Michigan </td></tr>
<tr><td bgcolor=” blue”> Huron </td></tr>
<tr><td bgcolor=” blue”> Erie </td></tr>
<tr><td bgcolor=” blue”> Ontario </td></tr>
</table>
Velocimacros可以在Velocity模板内实现行内定义(inline),也就 意味着同一个web site内的其他Velocity模板不可以获得Velocimacros的定义。定义一个可以被所有模板共享的Velocimacro显然是有很多好处 的:它减少了在一大堆模板中重复定义的数量、节省了工作时间、减少了出错的几率、保证了单点修改。
上面定义的#tablerows( $color $list )Velocimacro被定义在一个Velocimacros模板库(在velocity.properties中定义)里,所以这个macro可以在 任何规范的模板中被调用。它可以被多次应用并且可以应用于不同的目的。例如下面的调用:
#set ( $parts = [ “volva”, “stipe”, “annulus”, “gills”, “pileus” ] )
#set ( $cellbgcol = “#CC00FF” )
<table>
#tablerows( $cellbgcol $parts )
</table>
上面VTL将产生如下的输出:
<table>
<tr><td bgcolor=”#CC00FF”> volva </td</tr>
<tr><td bgcolor=”#CC00FF”> stipe </td</tr>
<tr><td bgcolor=”#CC00FF”> annulus </td</tr>
<tr><td bgcolor=”#CC00FF”> gills </td</tr>
<tr><td bgcolor=”#CC00FF”> pileus </td</tr>
</table>
Velocimacro arguments
Velocimacro可以使用以下任何元素作为参数:
lReference:任何以$开头的reference
lString literal:
lNumber literal:
lIntegerRange:[1….3]或者[$foo….$bar]
l对象数组:[“a”,”b”,”c”]
lboolean值:true、false
当将一个reference作为参数传递给Velocimacro时,请注意 reference作为参数时是以名字的形式传递的。这就意味着参数的值在每次Velocimacro内执行时才会被产生。这个特性使得你可以将一个方法 调用作为参数传递给Velocimacro,而每次Velocimacro执行时都是通过这个方法调用产生不同的值来执行的。例如:
#macro ( callme $a )
$a $a $a
#end
#callme( $foo.bar() )
执行的结果是:reference $foo的bar()方法被执行了三次。
如果你不需要这样的特性可以通过以下方法:
#set ( $myval = $foo.bar() )
#callme ( $myval )
Velocimacro properties
Velocity.properties文件中的某几行能够使Velocimacros的实现更加灵活。注意更多的内容可以看Developer Guide。
Velocity.properties文件中的velocimacro.libraary:一个以逗号分隔的模板库列表。默认情况下,velocity查找唯一的一个库:VM_global_library.vm。你可以通过配置这个属性来指定自己的模板库。
Velocity.properties文件中的 velocimacro.permissions.allow.inline属性:有两个可选的值true或者false,通过它可以确定 Velocimacros是否可以被定义在regular template内。默认值是ture——允许设计者在他们自己的模板中定义Velocimacros。
Velocity.properties文件中的
velocimacro.permissions.allow.inline.replace.global 属性有两个可选值true和false,这个属性允许使用者确定inline的Velocimacro定义是否可以替代全局Velocimacro定义 (比如在velocimacro.library属性中指定的文件内定义的Velocimacro)。默认情况下,此值为false。这样就阻止本地 Velocimacro定义覆盖全局定义。
Velocity.properties文件中的
velocimacro.permissions.allow.inline.local.scale 属性也是有true和false两个可选值,默认是false。它的作用是用于确定你inline定义的Velocimacros是否仅仅在被定义的 template内可见。换句话说,如果这个属性设置为true,一个inline定义的Velocimacros只能在定义它的template内使 用。你可以使用此设置实现一个奇妙的VM敲门:a template can define a private implementation of the second VM that will be called by the first VM when invoked by that template. All other templates are unaffected。
Velocity.properties文件中的 velocimacro.context.localscope属性有true和false两个可选值,默认值为false。当设置为true时,任何在 Velocimacro内通过#set()对context的修改被认为是针对此velocimacro的本地设置,而不会永久的影响内容。
发表评论
-
ThreadPoolExecutor线程池参数设置技巧
2017-12-19 13:06 1360一、ThreadPoolExecutor的重要参数 ... -
Java中如何设置使用代理IP发送网络请求
2016-04-20 10:45 2074Java中有两种方法可以实现用代理IP连接网络。 方式一, ... -
JDK并发工具包CompletionService和ExecutorCompletionService的好处和使用场景
2016-04-13 14:06 1851《Java并发编程实践》一书6.3.5节Complet ... -
HttpClient容易忽视的细节——连接关闭
2015-09-06 14:09 1162Java代码 HttpCl ... -
深入浅出 消息队列 ActiveMQ
2015-08-21 10:39 1408一、 概述与介绍 ActiveMQ 是Apach ... -
Java 代码 调用浏览器 打开url (支持多个操作系统)
2014-03-31 14:58 1943package com.ab.galaxy.test.mai ... -
Ant 实战
2013-10-22 10:13 859Ant是什么? Ant是一个构建工具,它可以帮助我们 ... -
30天轻松掌握JavaWeb
2013-10-22 10:07 1163Java Web,是用Java技术来解决相关we ... -
在线文档 doc.gotomao.com
2013-06-24 23:00 71http://doc.gotomao.com/ -
(转) Class.getResource与ClassLoader.getResource()区别
2013-06-04 22:14 1710class.getResource(String res)的 ... -
(转)PV,V,UV的概念,采集数据
2012-10-23 13:08 1219GUID IP+ 随机数 ... -
【转】Atlassian Confluence安装以及如何更改数据库
2012-08-22 16:14 3019Confluence是一个国外的一款商业wiki软 ... -
gzip解压
2011-07-26 12:06 705GZIPInputStream GIS=new GZIPInp ... -
MongoDB在windows操作系统cmd下乱码
2011-05-03 14:13 2931原因:由于mongodb后台的字符编码都是utf-8的, ... -
设计自己的Annotation
2011-04-05 11:37 777Annotation在java的世界正铺天盖地展开 ... -
jstl 的 <fn:> 标签应用(转)
2011-01-09 19:08 1050在jsp页面上经常遇到得到集合长度、字符长度、字符 ... -
mencached入门 pdf
2011-01-03 20:19 972见附件 -
让FCKeditor自动换行
2010-12-21 10:03 1595使用FCKEditor进行文本编辑时,当输入满一行时, ... -
Apache POI组件操作Excel,制作报表(二) (转)
2010-12-19 20:26 2037现在来看看Excel的基本设置问题,以2007为例,先从工作 ... -
Apache POI组件操作Excel,制作报表(一) (转)
2010-12-19 19:32 1203Apache的POI组件是Java操作Microsoft ...
相关推荐
这份中文版的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)...
5. **Parse** 指令用于解析并执行嵌入的 VTL 代码块。 6. **Stop** 指令用于终止当前模板的执行。 7. **Velocimacros** 是可重用的宏,可以简化模板编写,提高效率。 Velocity 还提供了对字符串、数值、范围操作的...
【Velocity 手册-中文版】是一份详细指导文档,主要面向页面设计者和内容提供者,介绍如何使用 Velocity 模板语言(VTL)来创建动态内容并将其嵌入到网页中。Velocity 是一个基于 Java 的模版引擎,它的核心功能是将...
【Velocity手册】深入解析 Velocity是一个强大的基于Java的模板引擎,其主要目的是将内容呈现与业务逻辑相分离,实现Model-View-Controller(MVC)架构。它使用一种称为Velocity Template Language (VTL) 的简单...
velocity中文手册 Velocity 是一个基于java 的模板引擎(template engine)。它允许任何人仅仅简单的使 用模板语言(template language)来引用由java 代码定义的对象。
### Velocity手册核心知识点详解 #### 1. 什么是Velocity? Velocity是一种基于Java的模板引擎,它的主要作用是将Web页面设计者与Java程序员的工作区分开来,使得两者能够平行工作而不互相干扰。通过这种方式,Web...
Velocity是一个基于Java的模板引擎,它主要被用来分离Java代码和Web页面。通过预定义的Java方法,Web设计者可以在页面设计过程中嵌入这些Java代码。与传统的MVC模式相结合,Web设计者和程序员可以并行工作,提高工作...
5. **社区支持**: 作为Apache项目,Velocity有着丰富的文档和活跃的社区支持,遇到问题时可以得到及时的帮助。 **Velocity核心概念** 1. **#set指令**: 用于赋值,如`#set($name = "张三")`,在模板中创建或更新...
Velocity 是一个基于 Java 的模板引擎,它主要用于将静态页面内容与动态数据相结合,实现模板语言与 Java 代码的分离。Velocity 的核心理念是让界面设计人员专注于页面布局和样式,而将业务逻辑处理交给 Java 开发...
### Velocity用户手册精要 **一、Velocity简介与能力范畴** Velocity是一款强大的模板引擎,其功能远远超越了web站点开发的局限。它不仅能够用于创建动态网页,还具备生成SQL、PostScript、XML等各类文档的能力,...
以上就是从给定文件内容中提取的关于 Velocity 用户手册的知识点。这些知识点覆盖了 Velocity 的基本概念、使用方式以及模板语言 VTL 的核心内容,为理解 Velocity 的功能和应用提供了详细的指导。
【Velocity简介】 Velocity是一个基于Java的模板引擎,它的核心功能是将静态的HTML模板与动态的Java代码相分离,让网页设计人员专注于页面布局,而程序员则专注于业务逻辑的实现。Velocity允许通过模板语言...
5. **##**:注释标记,用于忽略后续内容。 **Velocity上下文(Context)** Velocity上下文是模板和Java代码之间传递数据的桥梁。开发者可以通过VelocityContext对象将数据放入上下文,然后在模板中通过$符号引用...