模板引擎 Velocity
2016-12-07 00:00
197 查看
Velocity简介
Velocity是一个基于java的模板引擎(template engine)。它允许任何人仅仅简单的使用模板语言(template language)来引用由java代码定义的对象。
当Velocity应用于web开发时,界面设计人员可以和java程序开发人员同步开发一个遵循MVC架构的web站点,也就是说,页面设计人员可以只关注页面的显示效果,而由java程序开发人员关注业务逻辑编码。Velocity将java代码从web页面中分离出来,这样为web站点的长期维护提供了便利,同时也为我们在JSP和PHP之外又提供了一种可选的方案。
Velocity的能力远不止web站点开发这个领域,例如,它可以从模板(template)产生SQL和PostScript、XML,它也可以被当 作一个独立工具来产生源代码和报告,或者作为其他系统的集成组件使用。Velocity也可以为Turbine web开发架构提供模板服务(template service)。Velocity+Turbine提供一个模板服务的方式允许一个web应用以一个真正的MVC模型进行开发。
Velocity的Eclipse插件的Update地址是:http://propsorter.sourceforge.net/veloeclipse
Velocity 的 JavaDoc: http://www.ostools.net/apidocs/apidoc?api=velocity-1.7
使用模板库最大的不同是可以脱离 servlet 容器,运行和测试的时候不必在 servlet 容器下!
这是和JSP最大的不同之处。
个人感觉和freemaker类似:http://freemarker.org/
Velocity的一些用法
1.截取部分字段substring
使用substring(begin,end)要注意,结束位置为:end索引-1
2.分割成数组split
3.说到split成数组,就要看数组的几个可以用的方法
velocity 中的数组对应 Java 中的 List 对象。对于 Java 原生 Array 对象, 只能够 #foreach 进行遍历,无法使用 $arr[0] 和 $arr.get(0) 方法。
4.所以学java从不用数组,而用list
--事实上,list很方便,但list比数组效率低很多倍
$myarray.isEmpty()list是否为空
$myarray.size()获取list元素个数
$myarray.get(2)获取list指定下标的元素
$myarray.add()增加元素
5.计数用$velocityCount
在foreach中velocityCount表示循环的次数,从1开始,代表第一个循环。
6.空null和空字符串""的判断
在velocity中,非null被认为是真的,所以,判断null可以用
或者既可以判断null也可以判断空字符串
7.基本语法错误#end不要忘
最开始的时候经常#if就完了报错,后来都是写完if就end,最后写中间。
8.宏#macro其实也很简单
原来感觉不懂不敢碰,自从写了个velocity分页后就忽然觉得宏不要太好用。事情是这样的,当时地区三级联动需要多处调用,提取出成公共模块,用#parse导入后出现冲突,因为一个页面用两次地区联动代码,id就重复了。于是想把id给变成参数,当我需要这个公用代码的时候,把id当参数传进去,最后render的结果就是html代码的id为我的参数。这样看来,宏就是一个函数。
想要用宏,先写好,然后parse,然后调用。
一个简单的宏函数:
使用它:如果在本页面,直接#d,如果是单独写了一个模板文件,那么需要先#parse(文件路径),再#d,如同js外部引用。
传参数的宏:
一个综合使用,分页。
9.引用外部文件#include和#parse
我开始经常用#include,后来发现刷新页面没变化,用#parse就好了。字面理解,一个是直接拿过来,一个是解析后。所以,如果是传html代码,可以直接include;若是包含velocity代码的要编译#parse.
Velocity是一个基于java的模板引擎(template engine)。它允许任何人仅仅简单的使用模板语言(template language)来引用由java代码定义的对象。
当Velocity应用于web开发时,界面设计人员可以和java程序开发人员同步开发一个遵循MVC架构的web站点,也就是说,页面设计人员可以只关注页面的显示效果,而由java程序开发人员关注业务逻辑编码。Velocity将java代码从web页面中分离出来,这样为web站点的长期维护提供了便利,同时也为我们在JSP和PHP之外又提供了一种可选的方案。
Velocity的能力远不止web站点开发这个领域,例如,它可以从模板(template)产生SQL和PostScript、XML,它也可以被当 作一个独立工具来产生源代码和报告,或者作为其他系统的集成组件使用。Velocity也可以为Turbine web开发架构提供模板服务(template service)。Velocity+Turbine提供一个模板服务的方式允许一个web应用以一个真正的MVC模型进行开发。
Velocity的Eclipse插件的Update地址是:http://propsorter.sourceforge.net/veloeclipse
Velocity 的 JavaDoc: http://www.ostools.net/apidocs/apidoc?api=velocity-1.7
使用模板库最大的不同是可以脱离 servlet 容器,运行和测试的时候不必在 servlet 容器下!
这是和JSP最大的不同之处。
个人感觉和freemaker类似:http://freemarker.org/
Velocity的一些用法
1.截取部分字段substring
1 原始字符串:$!ag.tagValue,也许很长,前端页面展示时需要截取字符串。 2 #set($str=$!ag.tagValue) 3 4 #if($str.length()>30) 5 #set($str=$str.substring(0,30)) 6 $str ... 7 #else 8 $!ag.tagValue 9 #end
使用substring(begin,end)要注意,结束位置为:end索引-1
2.分割成数组split
1 #if($!{result.creType} && $result.creType) 2 #foreach ($element in $result.creType.split(",")) 3 #if($element == 1) 4 <script>document.getElementsByName("cretype")[0].checked="checked";</script> 5 #elseif($element == 2) 6 <script>document.getElementsByName("cretype")[1].checked="checked";</script> 7 #else 8 <script>document.getElementsByName("cretype")[2].checked="checked";</script> 9 #end 10 #end 11 #end
3.说到split成数组,就要看数组的几个可以用的方法
velocity 中的数组对应 Java 中的 List 对象。对于 Java 原生 Array 对象, 只能够 #foreach 进行遍历,无法使用 $arr[0] 和 $arr.get(0) 方法。
4.所以学java从不用数组,而用list
--事实上,list很方便,但list比数组效率低很多倍
$myarray.isEmpty()list是否为空
$myarray.size()获取list元素个数
$myarray.get(2)获取list指定下标的元素
$myarray.add()增加元素
5.计数用$velocityCount
在foreach中velocityCount表示循环的次数,从1开始,代表第一个循环。
6.空null和空字符串""的判断
在velocity中,非null被认为是真的,所以,判断null可以用
1 #if($!变量名) 2 …… 3 #else 4 …… 5 #end
或者既可以判断null也可以判断空字符串
1 #if("$!varName" != "") 2 不为null 或 "" 3 #else 4 …… 5 #end
7.基本语法错误#end不要忘
最开始的时候经常#if就完了报错,后来都是写完if就end,最后写中间。
8.宏#macro其实也很简单
原来感觉不懂不敢碰,自从写了个velocity分页后就忽然觉得宏不要太好用。事情是这样的,当时地区三级联动需要多处调用,提取出成公共模块,用#parse导入后出现冲突,因为一个页面用两次地区联动代码,id就重复了。于是想把id给变成参数,当我需要这个公用代码的时候,把id当参数传进去,最后render的结果就是html代码的id为我的参数。这样看来,宏就是一个函数。
想要用宏,先写好,然后parse,然后调用。
一个简单的宏函数:
1 #macro( d ) 2 <tr><td></td></tr> 3 #end
使用它:如果在本页面,直接#d,如果是单独写了一个模板文件,那么需要先#parse(文件路径),再#d,如同js外部引用。
传参数的宏:
1 #macro( tablerows $color $somelist ) 2 #foreach( $something in $somelist ) 3 <tr><td bgcolor=$color>$something</td></tr> 4 #end 5 #end
一个综合使用,分页。
9.引用外部文件#include和#parse
我开始经常用#include,后来发现刷新页面没变化,用#parse就好了。字面理解,一个是直接拿过来,一个是解析后。所以,如果是传html代码,可以直接include;若是包含velocity代码的要编译#parse.
相关文章推荐
- 改造Velocity模板引擎让$[!]{}输出默认进行html转义,并增加$#{}语法支持不转义输出
- Java语言介绍(04)开源项目(04)模板引擎(01)Velocity
- 【Velocity模板引擎】前端页面#if...#elseif...#end语句用法
- 基于.NET的模板引擎 NVelocity
- Velocity模板引擎的简单使用
- Java模板引擎Velocity基本语法
- apache模板引擎结合spring框架的简单使用(org.apache.velocity)
- Velocity模板引擎的简单使用
- NVelocity模板引擎的注意事项
- 模板引擎 Velocity
- 模板引擎 Velocity :动态生成页面
- 模板引擎 Velocity
- velocity模板引擎简介
- 模板引擎 NVelocity 初步学习笔记
- 基于java的Velocity模板匹配引擎
- Java模板引擎---Velocity
- 记录一个 Velocity 模板引擎的缓存问题
- Velocity模板引擎
- ASP.NET中的模板引擎Nvelocity简单示例
- Velocity模板引擎入门