- 浏览: 450288 次
- 性别:
- 来自: 湖南
最新评论
-
okhaoba:
show log 后可以在change history lis ...
如何把修改过的文件通过svn导出 -
XDKS59:
博主 我是用ssm写的不知道后台该怎么写 能帮帮我吗
fullCalendar制作一款简单的日历日程 -
会飞的鸭子20125:
很有帮助,谢谢
struts1的bean标签库 -
zxjlwt:
学习了素人派http://surenpi.com
Velocity的基本用法 -
spring_springmvc:
如何在java Web项目中开发WebService接口,地址 ...
Webservice接口开发简单例子
Velocity的基本用法<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> Velocity概述 Velocity是一个基于java的模板引擎(template engine)。它允许任何人仅仅简单的使用模板语言(template language)来引用由java代码定义的对象。当Velocity 应用于web开发时,界面设计人员可以和java程序开发人员同步开发一个遵循MVC架构的web站点,也就是说,页面设计人员可以只关注页面的显示效果,而由java程序开发人员关注业务逻辑编码。Velocity将java代码从web页面中分离出来,这样为web站点的长期维护提供了便利,同时也 为我们在JSP和PHP之外又提供了一种可选的方案。 Velocity下载地址:http://velocity.apache.org/download.cgi 这里面有个examples只要把这个项目导入到你的项目工程中,访问index.vm就可以了,这是学习velocity最简单的例子。
Velocity的能力远不止web站点开发这个领域,例如,它可以从模板 (template)产生SQL和PostScript、XML,它也可以被当作一个独立工具来产生源代码和报告,或者作为其他系统的集成组件使用。 Velocity也可以为Turbine web开发架构提供模板服务(template service)。Velocity+Turbine提供一个模板服务的方式允许一个web应用以一个真正的MVC模型进行开发。
一、基本语法
1、"#"用来标识Velocity的脚本语句,包括#set、#if 、#else、#end、#foreach、#end、#include、#parse、#macro等;
如:
#if($info.imgs)
<img src="$info.imgs" border=0>
#else
<img src="noPhoto.jpg">
#end
2、"$"用来标识一个对象(或理解为变量);如:$i、$msg、$TagUtil.options(...)等。
3、"{}"用来明确标识Velocity变量;
比如在页面中,页面中有一个$someonename,此时,Velocity将把someonename作为变量名,若我们程序是想在someone这个变量的后面紧接着显示name字符,则上面的标签应该改成${someone}name。
4、"!"用来强制把不存在的变量显示为空白。
如当页面中包含$msg,如果msg对象有值,将显示msg的值,如果不存在msg对象同,则在页面中将显示$msg字符。这是我们不希望的,为了把不存在的变量或变量值为null的对象显示为空白,则只需要在变量名前加一个“!”号即可。
如:$!msg
二、在EasyJWeb中的最佳实践
理论上你可以在EasyjWeb模板使用所有Velocity的脚本及功能,但我们不推荐你在界面模板中使用过多过复杂的脚本表达方式,在万不得已的情况下,不要在界面模板中加入任何复杂的逻辑,更不要在界面模板中加入变量声明、逻辑运算符等等。
1、$!obj 直接返回对象结果。
如:在html标签中显示java对象msg的值。<p>$!msg</p>
在html标签中显示经过HtmlUtil对象处理过后的msg对象的值 <p>$!HtmlUtil.doSomething($!msg)</p>
2、#if($!obj) #else #end 判断语句
如:在EasyJWeb各种开源应用中,我们经常看到的用于弹出提示信息msg的例子。
#if($msg)
<script>
alert('$!msg');
</script>
#end
上面的脚本表示当对象msg对象存在时,输出<script>等后面的内容。
3、#foreach( $info in $list) $info.someList #end 循环读取集合list中的对象,并作相应的处理。
如:EasyJF开源论坛系统中论(0.3)坛首页显示热门主题的html界面模板脚本:
#foreach( $info in $hotList1)
<a href="/bbsdoc.ejf?easyJWebCommand=show&&cid=$!info.cid"
target="_blank">$!info.title</a><br>
#end
上面的脚本表示循环遍历hotList1集合中的对象,并输出对象的相关内容。
4、#macro(macroName)#end 脚本函数(宏)调用,不推荐在界面模板中大量使用。 Velocity中的宏我们可以理解为函数。 ①宏的定义 #macro(宏的名称 $参数1 $参数2 …) 语句体(即函数体) #end
②宏的调用 #宏的名称($参数1 $参数2 …)
说明:参数之间用空格隔开。
如:在使用EasyJWeb Tools快速生成的添删改查示例中,可以点击列表的标题栏进行升降排序显示,这是我们在EasyJWeb应用中经常看到的一个排序状态显示的模板内容。
函数(宏)定义,一般放在最前面
#macro(orderPic $type)
#if ($orderField.equals($type))
<img src="http://images.cnblogs.com/ico/${orderType}.gif">
#end
#end
具体的调用如:<font color="#FFFFFF">头衔#orderPic("title")</font>
5、包含文件#inclue("模板文件名")或#parse("模板文件名")
主要用于处理具有相同内容的页面,比如每个网站的顶部或尾部内容。
如:#parse("/blog/top.html")或#include("/blog/top.html")
区别:
1 若包含的文件中有Velocity脚本标签,将会进一步解析,而include将原样
显示。
2 #parse只能指定单个对象。而#include可以有多个
示范代码:
#include ("one.gif", "two.txt", "three.htm" )
#parse ("parsefoo.vm")
三、关于#set的使用
在万不得已的时候,不要在页面视图自己声明Velocity脚本变量,也就是尽量少使用#set。有时候我们需要在页面中显示序号,而程序对象中又没有包含这个序号属性同,可以自己定义。如在一个循环体系中,如下所示:
#set ($i=0)
#foreach($info in $list)
序号:$i
#set($i=$i+1)
#end
四、Velocity脚本语法摘要
声明:#set ($var=XXX)
变量引用,字面字符串,属性引用,方法引用,字面数字,数组列表。
#set( $monkey = $bill ) ## variable reference
#set( $monkey.Friend = "monica" ) ## string
#set( $monkey.Blame = $whitehouse.Leak ) ## property reference
#set( $monkey.Plan = $spindoctor.weave($web) ) ## method reference
#set( $monkey.Number = 123 ) ##number
#set( $monkey.Say = ["Not", $my, "fault"] ) ## ArrayList
算术运算符
#set ( $foo = $bar + 3 ) #set ( $foo = $bar - 4 ) #set ( $foo = $bar * 6 ) #set ( $foo = $bar / 2 )
2、注释:
单行## XXX
多行#* xxx
xxxx
xxxxxxxxxxxx*#
References 引用的类型
3、变量 Variables
以 "$" 开头,第一个字符必须为字母。character followed by a VTL Identifier. (a .. z or A .. Z).
变量可以包含的字符有以下内容:
alphabetic (a .. z, A .. Z)
numeric (0 .. 9)
hyphen ("-")
underscore ("_")
4、Properties
$Identifier.Identifier
$user.name
hashtable user中的的name值.类似:user.get("name")
5、Methods
object user.getName() = $user.getName()
6、Formal Reference Notation
用{}把变量名跟字符串分开
如
#set ($user="csy"}
${user}name
返回csyname
$username
$!username
$与$!的区别
当找不到username的时候,$username返回字符串"$username",而$!username返回空字符串""
7、双引号 与 引号
#set ($var="helo")
test"$var" 返回testhello
test'$var' 返回test'$var'
可以通过设置 stringliterals.interpolate=false改变默认处理方式
8、条件语句
#if( $foo )
<strong>Velocity!</strong>
#end
#if($foo)
#elseif()
#else
#end
当$foo为null或为Boolean对象的false值执行.
9、逻辑运算符:== && || !
10、循环语句#foreach($var in $arrays ) // 集合包含下面三种Vector, a Hashtable or an Array
#end
#foreach( $product in $allProducts )
<li>$product</li>
#end
#foreach( $key in $allProducts.keySet() )
<li>Key: $key -> Value: $allProducts.get($key)</li>
#end
#foreach( $customer in $customerList )
<tr><td>$velocityCount</td><td>$customer.Name</td></tr>
#end
语句的嵌套 #foreach ($element in $list) ## inner foreach 内循环 #foreach ($element in $list) This is $element. $velocityCount <br>inner<br> #end ## inner foreach 内循环结束 ## outer foreach This is $element. $velocityCount <br>outer<br> #end
11、velocityCount变量在配置文件中定义
# Default name of the loop counter
# variable reference.
directive.foreach.counter.name = velocityCount
# Default starting value of the loop
# counter variable reference.
directive.foreach.counter.initial.value = 1
12、包含文件
#include( "one.gif","two.txt","three.htm" )
13、Parse导入脚本
#parse("me.vm" )
14、#stop 停止执行并返回
停止执行模板引擎并返回,把它应用于debug是很有帮助的。
15、定义宏Velocimacros ,相当于函数 支持包含功能
#macro( d )
<tr><td></td></tr>
#end
调用
#d()
16、带参数的宏
#macro( tablerows $color $somelist )
#foreach( $something in $somelist )
<tr><td bgcolor=$color>$something</td></tr>
#end
#end
17、Range Operator
#foreach( $foo in [1..5] )
18、转义字符
如果reference被定义,两个’\’意味着输出一个’\’,如果未被定义,刚按原样输出。 #set($email = "foo" ) $email \$email \\$email \\\$email
输出: foo $email....
- Velocity的基本用法.zip (7.3 KB)
- 下载次数: 34
发表评论
-
读取文件数据入库与读取表数据生成文件
2016-12-02 17:41 720资源中内容包括两种功能: 1.把数据库的数据,通过sql查 ... -
word与excel转pdf的实现
2016-12-02 17:32 999用aspose实现word与excel转成pdf的功能,附 ... -
根据类查找其所在的jar包
2016-12-02 17:23 992package text; import java.io ... -
shell查询数据生成文件到指定路径
2016-04-07 18:09 812############################## ... -
执行远程服务器上的shell脚本2
2015-01-05 11:43 0package com.linkage.maitain.fa ... -
执行远程服务器上的shell脚本
2015-01-05 11:40 5164package com.linkage.interface ... -
单点登录cookie传值
2014-11-20 17:29 1410用cookies保存登录信息,下次能直接登录 先看登录页 ... -
Webservice接口开发简单例子
2014-04-30 15:45 20276Webservice是系统对外的接口,比如你要从别的网站或服 ... -
常见乱码处理
2014-03-26 23:33 773注意:保持整个项目中所有的编码都统一。 1、eclipse ... -
struts2通配符的用法
2014-03-03 16:19 847先看我们的action配置 <package na ... -
weblogic11g部署项目
2013-09-06 17:29 1248进入weblogic控制台部署项目:http://127. ... -
查找某个类所在jar包
2013-09-05 10:00 5334package com.test; import ja ... -
Spring+Struts2+Hibernate整合
2013-08-01 23:14 5823附件:整合过程word文档。s2sh无注解整合.zip ... -
配置ssh常见异常
2013-01-15 11:42 20831、在做struts时,出现 ... -
JDK的动态代理
2012-09-12 23:57 1176花了三天时间终于把马士兵的动态代理看完了,这是我做的一些 ... -
maven+struts2+jetty项目实例讲解
2012-07-05 14:59 1166Maven在eclipse中的运用 一、安装Mave ... -
深入浅出Rhino:Java与JS互操作
2012-05-22 22:43 1986深入浅出Rhino:Java与JS互操作 2011年11 ... -
JBoss的安装与配置
2012-03-27 13:39 1169JBoss的安装与配置下载与安装 JBoss 在本文中,我们下 ... -
把java文件做成exe
2012-03-13 15:06 950在word文档中详细介绍怎么把java文件做成exe -
Urlrewrite的配置与使用方法
2012-03-02 14:06 1784Urlrewrite的配置与使用方法: 1. 导入urlr ...
相关推荐
velocity基本语法,包含velocity一些基本语法和用法。
本人写的velocity教程,包括模板引擎基本使用方法,velocity语法,servlet+velocity例子,spring mvc+velocity例子
spring-boot-velocityvelocity 和spring boot 只要还是熟悉下velocity的基本使用方法开始接触下是spring boot 结合下vm模版引擎学习下。需要注意的是解决乱码问题#需要指定下编码格式spring.velocity.properties....
介绍velocity的基本知识点和常用语法,及用法实例!
1.基本使用模式 4 4.单实例还是多实例(To Singleton Or Not To Singleton...)? 6 1.Singleton Model 6 2.Separate Instance 6 5. The Context 7 1.The Basics 7 2.在模板中用#foreach指令支持迭代对象 8 3.Context ...
Velocity模板的基本语法及使用的基本方法。
Velocity是一个动画引擎,具有与jQuery动画... 尽管Velocity与jQuery一起使用,但它使用自己的动画堆栈,该堆栈通过两个基本原理提供其性能:1)同步DOM→补间堆栈以最小化布局抖动,以及2)缓存值以最小化DOM查询。
最近要实现一个类似文字波浪线的效果,使用了velocity-ui这个动画库,第一个感觉就是使用简单,代码量少,性能优异,在此简单介绍一下使用方法,并实现一个看上去不错的动画. 具体使用方法可以点击这里 基本使用 要使用...
nvvim 启发模式。 要求 这应该可以在任何使用+python3编译的最新vim上...我在进行了快速截屏概述了基本用法。 nvvim将其注释和数据库存储在一个目录中。 任何一个: 导出NVIM_HOME=path/to/directory并运行nvvim 。
用于缩放或限制Midi输入事件的速度的基本实用程序。 我写这篇文章是因为我的Midi键盘太安静了,我只需要一种简单的方法来提高力度值的下限。 我使用程序的方式是。 启动a2jmidi和此程序。 使用qjackctl将a2jmidi...
极简、高性能Template Engine,十分钟内掌握基本用法 自动加载修改后的java文件,开发过程中无需重启web server AOP支持,拦截器配置灵活,功能强大 Plugin体系结构,扩展性强 多视图支持,支持FreeMarker、JSP...
极简、高性能Template Engine,十分钟内掌握基本用法 自动加载修改后的java文件,开发过程中无需重启web server AOP支持,拦截器配置灵活,功能强大 Plugin体系结构,扩展性强 多视图支持,支持FreeMarker、JSP...
极简、高性能 Template Engine,十分钟内掌握基本用法 自动加载修改后的 Java 文件,开发过程中无需重启服务 AOP支持,拦截器配置灵活,功能强大 Plugin 体系结构,扩展性强 多视图支持,支持 Enjoy、FreeMarker、...
第一部分 Spring基础 第1章 开始Spring之旅 1.1 为什么使用Spring 1.1.1 J2EE开发者的一天 1.1.2 Spring的承诺 1.2 Spring是什么 ... 11.5.2 使用元数据保护方法 11.6 小结
10.1 sitemesh基本使用方法 194 10.2 sitemesh高级应用 198 10.2.1 和标签的使用介绍 198 10.2.2 、和标签的使用介绍 200 附录 204 附录1 安装JBoss让它部署Web项目 204 F1.1 安装 204 F1.2 手工部署Web项目 207 ...
互相关测速算法(Cross-Correlation Velocity Measurement Algorithm)是一种用于计算流体中颗粒流速的方法。该算法基于两个传感器之间的互相关分析,通过比较两个传感器之间的信号差异来确定颗粒的运动速度。 在...
word源码java generate_code_manager 项目介绍 我为什么想开源一个代码生成器? 现在的项目基本上属于前后端分离的 ...重写了velocity获取模板路径的方法,然后在自己项目中的模板 用velocity的语法写了能生成单张表
用法 该库支持三种主要类型的MIDI结构: 一个序列,代表带有多个音轨的完整MIDI文件。 曲目,消息的有序集合。 一条消息,是MIDI协议的基本组件。 这些都可以从解析。 解析消息 var midi = require ( 'midi-node...