velocity基本语法
一、基本语法 1、"#"用于识别Velocity该脚本语句,这包括#set、#if 、#else、#end、#foreach、#end、#iinclude、#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
二 我们看到,全部界面模板中归纳起来仅仅有以下四种简单模板脚本语句就可以实现:
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 脚本函数(宏)调用。不推荐在界面模板中大量使用。
如:在使用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("模板文件名称")
主要用于处理具有同样内容的页面,比方每一个站点的顶部或尾部内容。 用法。能够參考EasyJF开源Blog及EasyJF开源论坛中的应用!
如:#parse("/blog/top.html")或#include("/blog/top.html")
parse与include的差别在于,若包括的文件里有Velocity脚本标签,将会进一步解析。而include将原样显示。
三、关于#set的使用
在万不得已的时候。不要在页面视图自己声明Velocity脚本变量,也就是尽量少使用#set。有时候我们须要在页面中显示序号。而程序对象中又没有包括这个序号属性同,能够自定义。如在一个循环体系中,例如以下所看到的:
#set ($i=0)
#foreach($info in $list)
序号:$i
#set($i=$i+1)
#end
四、Velocity脚本语法摘要
1、声明:#set ($var=XXX)
左边能够是下面的内容
Variable reference
String literal
Property reference
Method reference
Number literal #set ($i=1)
ArrayList #set ($arr=["yt1","t2"])
算术运算符 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 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 停止运行并返回 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] )
总结:
在EasyJWeb中,我们提供了四条主要的模板脚本语句。基本上就能满足全部应用模板的要求。 这四条模板语句非常easy,能够直接由界面设计人员来加入。在当前非常多EasyJWeb的应用实践中,我们看到,全部界面模板中归纳起来仅仅有以下四种简单模板脚本语句就可以实现:
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.something #end 循环读取集合list中的对象。并作对应的处理。 如:EasyJF开源论坛系统中论坛首页显示热门主题的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 脚本函数(宏)调用,不推荐在界面模板中大量使用。
如:在EasyJF简易订销管等系统中常常看到的一个排序状态显示的模板内容。
函数(宏)定义,一般放在最前面
#macro(orderPic $type)
#if ($orderField.equals($type))
<img src="http://images.cnblogs.com/ico/${orderType}.gif">
#end
#end
详细的调用如:<font color="#FFFFFF">头衔#orderPic("title")</font>
版权声明:本文博主原创文章。博客,未经同意不得转载。
velocity基本语法的更多相关文章
- EL与Velocity基本语法总结:
El(expression language): 基本语法点: $与{}搭配使用是常态取值 . 与[]的区别,后者可以取特殊值:- .等 支持一些基本的逻辑运算: && || > ...
- Velocity 基本语法
Velocity 基本语法 Velocity 是一个基于 Java 的模板引擎框架,提供的模板语言可以使用在 Java 中定义的对象和变量上.Velocity 是 Apache 基金会的项目,开发的目 ...
- Velocity常用语法详解
果然公司用的东西跟平时学的东西不太一样,我们公司前台页面并不是我们熟悉的.html或者.jsp文件,而是很多人不知道的 .vm文件,其实只要我们理解了jsp文件,vm文件也就是一些基本语法不同而已. ...
- Velocity模板语法说明
Velocity基本语法 "#"用来标识Velocity的关键字,包括#set.#if .#else.#end.#foreach.#end.#include.#parse.#mac ...
- Velocity初探小结--velocity使用语法详解
做java开发的朋友一般对JSP是比较熟悉的,大部分人第一次学习开发View层都是使用JSP来进行页面渲染的,我们都知道JSP是可以嵌入java代码的,在远古时代,java程序员甚至在一个jsp页面上 ...
- Velocity简单语法及VelocityHelper封装
1.简单替换##这是注释Wellcome ${userName}! Now:$date 2.申明变量:#set( $iAmVariable = "good!" )Welcome $ ...
- Velocity 语法(转)
一.基本语法 1."#"用来标识Velocity的脚本语句,包括#set.#if .#else.#end.#foreach.#end.#iinclude.#parse.#macro ...
- Velocity模板引擎语法
Velocity 模板引擎介绍 Velocity是一个基于java的模板引擎(template engine).它允许任何人仅仅简单的使用模板语言(template language)来引用由java ...
- 【转】Velocity 语法
一.基本语法 1."#"用来标识Velocity的脚本语句,包括#set.#if .#else.#end.#foreach.#end.#iinclude.#parse.#macro ...
随机推荐
- 自定义ComboBox,简简单单实现
private void Button_Click(object sender, RoutedEventArgs e) { Popup1.PlacementTarget = TesTextBox; P ...
- 编程算法 - 不用加减乘除做加法 代码(C)
不用加减乘除做加法 代码(C) 本文地址: http://blog.csdn.net/caroline_wendy 题目: 写一个函数, 求两个整数之和, 要求在函数体内不得使用+, -, *, /四 ...
- 数据验证validator 与 DWZ
在进行系统经常使用的数据验证.数据验证可以编写自己的,它也可以用来作为现在.现在,记录这两个库的使用, validator <!DOCTYPE HTML PUBLIC "-//W3C/ ...
- 【iOS开发-22】navigationBar导航栏,navigationItem建立:获取导航栏中的基本文本和button以及各种跳跃
(1)navigationBar导航栏可以被看作是self.navigationController一个属性导航控制器,它可以由点直接表示self.navigationController.navig ...
- 【Win7】【磁盘管理】删除相似“33fbc1d57e9aaf1ea88e6f08”缓存目录
一般,在计算机磁盘.移动硬盘.或U盘出现,类别似"33fbc1d57e9aaf1ea88e6f08",你不能删除缓存目录.能Win7删除. (1).使用管理员,打开命令提示符窗口( ...
- Java 并发专题 : Semaphore 实现 互斥 与 连接池
继续并发方面的知识.今天介绍Semaphore,同样在java.util.concurrent包下. 本来准备通过例子,从自己实现到最后使用并发工具实现,但是貌似效果并不是很好,有点太啰嗦的感觉,所有 ...
- shell文字过滤程序(十):cut命令
[版权声明:转载请保留源:blog.csdn.net/gentleliu.Mail:shallnew at 163 dot com] cut指挥类似至awk,从行内提取的信息,它是一个较弱的版本的功能 ...
- wpf做的3d滑动gallery
原文:wpf做的3d滑动gallery wpf做的3d滑动gallery 随着iphone\ipad的流行及热捧,现在做移动产品不管是什么平台的,领导总想做成像ios系统的样子.自从微软发布了wind ...
- effective c++ prefer const,enum, inline to #defines
学习心得 对于纯常量,最好以const对象或者enums替换#define #define FIRST 3 //not good enum { first=1, second=2 } ; int nu ...
- Java Swing 绝对布局管理方法,null布局(转)
首先把相关容器的布局方式设为 setLayout(null); 然后调用组件的 setBounds() 方法 设置button的位置为(100,100) 长宽分别为 60,25 jButton.se ...