资讯专栏INFORMATION COLUMN

velocity的基本使用 && 实例讲解

zhunjiee / 3449人阅读

摘要:的简介是一个基于的模板引擎。使用,也可以写成。所以,应该使用规范的格式书写现在知道变量是而不是。如当页面中包含,如果对象有值,将显示的值,如果不存在对象同,则在页面中将显示字符。

velocity的简介

Velocity是一个基于java的模板引擎(template engine)。它允许任何人仅仅简单的使用模板语言(template language)来引用由java代码定义的对象,这样的话其实在前后端分离而言又是一个较为合理的可选方案,
Velocity也可以配合其他的语言来完成使用,Velocity.js就是不错的选择,这样的话可以依靠nodejs和浏览器环境来实现模版的功能。

什么是Velocity模版?

Velocity模版可以是任意的文本文件,只要里面包含专门的模板语言(VTL)标记,就可以被Velocity模板引擎解析;

Velocity模版的工作机制:

Velocity可以通过获取Java对象的函数返回值、属性值,用于替换模板文件中的VTL变量标记,从而生成新的文件,模板文件的扩展名可以是".vm"、".htm"、".html"、".asp"、".sql",等等任

语法简介

大部分的模版引擎都是有自己的书写方式,不过{}这个大括号基本都是他们的通用符号,这里介绍语法的顺序是:

变量定义、使用

控制语句 if for之类

指令

变量

变量是任何语言都不可缺少的;

变量定义和使用

变量的定义和赋值基本方法:#set (<$变量名> = <"变量值">)
#set ($name = "Sankhya") ##字符串
#set ($age = 30) ##数字
#set ($list = ["Sankara", ${name}, "Shankara"]) ##数组
#set ($dict = ["A":"va", "B":234, "C":${value}]) ##HashTable
在双引号之间的字符串将被Velocity引擎解释和重新解释;在velocity中使用$2.5这样的货币标识是没有问题得的,因为velocity中的变量总是以一个大写或者小写的字母开始的。

使用:
${name} ,也可以写成:$name。提倡用前面的写法。
例如:你希望通过一个变量$vice来动态的组织一个字符串。
Jack is a $vicemaniac.
本来变量是$vice现在却变成了$vicemaniac,这样Veloctiy就不知道您到底要什么了。所以,应该使用规范的格式书写 : Jack is a ${vice}maniac
现在Velocity知道变量是$vice而不是$vicemaniac。
例如:
#set ($desc = "${name} is ${age} years old;")
执行这条语句之后,输出$desc的值将是:Sankhya is 30 years old;
同时还需要注意:
(1).Velocity模版中的变量是弱类型的;等号"="右边的值可以是引用、字符串、数字、Array、Vector、HashTable或表达式;
(2).如果等号"="右边的值是null,则左边的变量不会被赋值,且仍然保留以前的值;
(3).模板中没有被定义的变量将被认为是一个字符串;
(4).模板引擎不会将reference解释为对象的实例变量;如:$foo.Name将被解释为对象Foo的getName()方法,而不是Foo对象的Name实例变量;$foo.getBar()就等价于$foo.Bar;

注释:

单行注释使用“##”开头就可: ## 这好似注释

多行注释 #* 多行注释 *#

文档注释: #** 文档编写 **#

控制语句 if条件控制语句
#if ()
  ##statement segment
 #elseif ()
  ##statement segment
 #else
  ##statement segment
 #end

作为condition,Velocity引擎也支持关系运算符(>、>=、<、<=、!=)和逻辑运算符(&&->AND、||->OR、!->NOT);
"!"用来强制把不存在的变量显示为空白。
如当页面中包含$msg,如果msg对象有值,将显示msg的值,如果不存在msg对象同,则在页面中将显示$msg字符。这是我们不希望的,为了把不存 在的变量或变量值为null的对象显示为空白,则只需要在变量名前加一个“!”号即可。
如:$!msg

循环控制
#foreach ($element in $list)
  ##your statement
  $velocityCount
#end
指令

#parse和#include指令:
这两者都是导入本地模板文件;
#parse指令只能导入一个文件,同时,被导入的文件的内容将会被Velocity模板引擎解析,意思就是把被导入的文件的内容copy到当前文件中;该指令也可以被递归调用;

#include指令可以导入一个或多个文件,当导入多个文件时,可以用逗号分隔;而且,被导入的文件的内容不会被Velocity模版引擎解析;
例如:
#include ("one.gif", "two.txt", "three.htm") ##不会被模版引擎解释;
#include (${file1}, ${file2}, ${file3}) ##不会被模版引擎解释;
#parse ("server.conf") ##会被模版引擎解释;

#stop停止执行模板引擎并返回,把它应用于debug是很有帮助的;
Velocity中的转义字符也是使用符号"";这就意味着执行""将会输出"",而执行"$"将会输出"$",执行"#"会输出"#";

参考:http://bdxnote.blog.163.com/b...
http://www.blogjava.net/alexw...
http://www.cnblogs.com/likwo/...

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/70048.html

相关文章

  • velocity基本使用 &amp;&amp; 实例讲解

    摘要:的简介是一个基于的模板引擎。使用,也可以写成。所以,应该使用规范的格式书写现在知道变量是而不是。如当页面中包含,如果对象有值,将显示的值,如果不存在对象同,则在页面中将显示字符。 velocity的简介 Velocity是一个基于java的模板引擎(template engine)。它允许任何人仅仅简单的使用模板语言(template language)来引用由java代码定义的对象,...

    scq000 评论0 收藏0
  • Vue.js进入/离开&amp;列表过度动画。

    摘要:包括以下工具在过渡和动画中自动应用可以配合第三方动画库,如在过渡钩子函数中使用直接操作可以配合使用第三方动画库,如在这里,我们只会讲到进入离开和列表的过渡。不仅可以进入和离开动画,还可以改变定位。 概述 Vue在插入、更新或则移除DOM时,提供多种不同方式的应用过渡效果。包括以下工具: *在CSS过渡和动画中自动应用class *可以配合第三方CSS动画库,如Animate.css *...

    thekingisalwaysluc 评论0 收藏0
  • Python Pandas中loc和iloc函数基本用法讲解

      Python Pandas的主要左右是解决大量的数据,快速的对数据去进行批量的处理,大大提高工作的效率。那么,里面的loc和iloc函数,具体是怎么进行使用呢?怎么知道每个函数的基本用法呢?下面小编就给大家详细的解答下。  1 loc和iloc的含义  loc表示location的意思;iloc中的loc意思相同,前面的i表示integer,所以它只接受整数作为参数。  2用法  import...

    89542767 评论0 收藏0
  • Vue3中reactive与ref函数使用场景

      我们知道在 Vue3 中有两个非常常用的响应式 API:reactive 和 ref。这样就可以变成我们想要追踪的数据变成响应式。  知道吗?在使用时一直被告知 ref 用于创建基础类型的响应式,也可以创建引用类型的响应式。而对于引用类型,底层也是转换为 reactive 来进行响应式处理。那既然这样为撒还需要 reactive ,全部使用 ref 不就行了吗?  虽然 ref 创建的响应式数...

    3403771864 评论0 收藏0

发表评论

0条评论

zhunjiee

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<