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 ...
随机推荐
- CSS之box-sizing的用处简介
前几天才发现有 box-sizing 这么个样式属性.研究了一番感觉非常有意思, 通过指定容器的盒子模型类型,达到不同的展示效果 比如:当一个容器宽度定义为 width:100%; 之后.假设再添加 ...
- DSL简介(转)
DSL编程:有人将DSL编程称之为声明式(Declarative)编程.DSL是在模型之上建立的一种更加灵活的对 模型化的理解和使用方式.语义模型是DSL的核心.内部DSL:用通用语言的语法表示DSL ...
- Windows Phone开发(14):数据模板
原文:Windows Phone开发(14):数据模板 数据模板,如果你仅仅听到这个名词,你一定很迷惑,什么来的?用来干什么的?不急,亲,今天,我们一起来探索一下吧. 用白话文说,数据模板就是用来规范 ...
- Red Gate系列之三 SQL Server 开发利器 SQL Prompt 5.3.4.1 Edition T-SQL智能感知分析器 完全破解+使用教程
原文:Red Gate系列之三 SQL Server 开发利器 SQL Prompt 5.3.4.1 Edition T-SQL智能感知分析器 完全破解+使用教程 Red Gate系列之三 SQL S ...
- 0x00000000该内存不能为read
0X000000存储器不能read解决方案 有这种现象方面,首先,在硬件,这有问题的内存,二,软件,其中有许多问题. 一:先说说硬件: 一般来说,电脑硬件不easy生病.内存故障的可能性并不大(非你的 ...
- Eclipse+Maven命令创建webapp项目<三>
1.使用maven命令:mvn archetype:create -DgroupId=xxxxx -DartifactId=web-sample -DarchetypeArtifactId=maven ...
- lunix shell 基础经常使用整理
1 ps -ef 显示正在执行的进程,pid 等信息 UID PID PPID C STIME TTY TIME CMD root 1 0 0 03:45 ? 00:00:02 ini ...
- Linux下安装Oracle11g服务器(转)
安装环境 Linux服务器:SuSe10 sp2 64位 Oracle服务器:Oracle11gR2 64位 系统要求 Linux安装Oracle系统要求 系统要求 说明 内存 必须高于1G的物理内存 ...
- JSP中的include有哪些?有什么差别?
JSP中的include有哪些?有什么差别? 1.JSP中的include有哪些 (1)<%@include file="" %> (2)<jsp:include ...
- OCP解决问题052-- DROP PROFILE app_user
133.You created a profile APP_USER and assigned it to the users. After a month, you decide to drop t ...