Velocity使用手册

一、基本语法

1、#”号用来标识Velocity脚本语言,包括#set#if....#else....#end#foreach......#end#include#parse#macro等。

常用标签有#if()  #else  #end#if#  end#foreach()#end#set

 

 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的脚本及功能,但我们不推荐你在界面模板中使用过多过复杂的脚本表达方式,在万不得已的情况 下,不要在界面模板中加入任何复杂的逻辑,更不要在界面模板中加入变量声明、逻辑运算符等等。 

EasyJWeb中,我们提供了五条基本的模板脚本语句,基本上就能满足所有应用模板的要求。这四条模板语句很简单,可以直接由界面设计人员来添加。在当前很多EasyJWeb的应用实践中,我们看到,所有界面模板中归纳起来只有下面四种简单模板脚本语句即可实现:
1$!obj  直接返回对象结果,!把不存在的对象显示时候变为空白
 如:在html标签中显示java对象msg的值。<p>$!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 

$!velocityCount用于显示foreach的循环次数(用于计数) 

循环读取集合list中的对象,并作相应的处理。
 #foreach( $info in $hotList1)
<b>$!info.title</b>
 #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>

经过测试,宏不支持方法重载

 

三、关于#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 refrence

Method refrence

Number literal #set($i=1)

ArrayList  #set($list=[a,b”,“c])

2、Formal Reference Nation

{}把变量名跟字符串分开

如:#set($user =csy)

${user}name返回的结果为csyname

$username返回结果为$username

$$!的区别

当找不到username的时候$username返回字符串username,而$!username返回空的字符串””

3、双引号与引号的区别

#set($var =abc)

test$!var返回结果为:testabc

test$!var返回结果为:test$var

 

4、条件语句

#if( $foo ) 
 <strong>Velocity!</strong>
 #end


 #if($foo)
 #elseif()
 #else
 #end


 5、循环语句#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

 

 

转载于:https://my.oschina.net/NEMOCoder/blog/534889

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值