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 ...
随机推荐
- graph driver-device mapper-01driver初始化
// thin device数据结构 type DevInfo struct { Hash string `json:"-"` DeviceId int `json:"d ...
- 6月27日CTO俱乐部下午茶印象
作者:朱金灿 来源:http://blog.csdn.net/clever101 感谢CSDN的邀请,有幸参加了6月27日“CTO俱乐部下午茶时光:CTO在团队管理中所遇到的那些事”活动.本期的主讲嘉 ...
- hdu1561(树形背包)
给定n,m表示n个城堡,我们可以选择攻占m个城堡.要使得价值最大 接下来n行 a b, 第i行的a b,表示攻占第i个城堡的价值为b,但需要先攻占第a个城堡 如果有多个a=0的点,那么就不是一棵树 ...
- cocos2d-x笔记(十一)Lua发展飞机战争-5-
让飞机动
然后在飞机上已被添加到游戏,下一步是让它动起来.主要是为了应对触摸事件. 在C++通过重写ccTouchBegan().ccTouchMoved().ccTouchEnded()三个函数来响应触摸事件 ...
- 企业邮件系统-Postfix安装使用
Postfix是目前流行的一套邮件传输代理软件(MTA),其作者Wietst Venema最初开发这套软件时就对总体设计.扩展能力.可用性及系统安全等方面进行了充分的考虑.由于Postfix在稳定.效 ...
- SQL在declare声明变量
在sql添加的声明变量. declare @local_variable data_type 你需要指定一个变量声明的类型, 能够使用set和select对变量进行赋值, 在sql语句中就能够使用@l ...
- Case when 的使用方法
SQL Case when 的使用方法 Case具有两种格式.简单Case函数和Case搜索函数. --简单Case函数 CASE sex WHEN '1' THEN '男' WHEN '2' THE ...
- Saltstack 安装使用
Saltstack是一个具备puppet与func功能为一身的集中化,轻量级的自动化运维管理工具,使用python编写,功能非常强大,可以使用EPEL快速安装.相比较puppet,安装和配置更加容易和 ...
- 【Android开发经验】使用反射,得到的类的字段、方法、并实现了简单的调用
本文后推出Android的ICO框架做准备,所以,假设你想要一个最近的一项研究Android的ICO学生框架.你可以稍微看一下. 首先,简介一下Java里面的反射. JAVA反射机制是在执行状态中,对 ...
- sql系列(基础)-第二章 限制和排序数据
更好的看↑代码点击VIEW PLAN 第二章 约束和排序数据 1. 在 emp 表中选择工资介于 1500 到 2500 的员工的信息: 注意:使用 between 下边界 and 上边界时.条件包括 ...