文档章节

velocity模板库的实际使用

阿信sxq
 阿信sxq
发布于 2016/07/12 17:20
字数 1032
阅读 75
收藏 3

        之前一直使用的jsp,后来看到有说使用模板会更好的说法,正好比较闲,就自学了一下velocity,把之前用jsp做视图的spring mvc项目转换为了用velocity来做视图,下面就一些使用中的问题做一下归纳与总结,如有不对的地方,还望大家指出来。

0、环境准备

         从使用velocity的角度来说,需要velocity的jar以及必须要的依赖,commons-lang、commons-collections,一般情况下还会需要velocity-tools,然后就会产生一大堆的依赖,但是经过实际使用检测,其实不添加那些依赖也不会有问题(或许是我没有使用到那部分功能,其实增强包里面的很多功能都不会用到的)。

         maven依赖配置:

<dependency>
    <groupId>org.apache.velocity</groupId>
    <artifactId>velocity</artifactId>
    <version>1.7</version>
</dependency>
<dependency>
    <groupId>commons-lang</groupId>
    <artifactId>commons-lang</artifactId>
    <version>2.6</version>
</dependency>
<dependency>
    <groupId>commons-collections</groupId>
    <artifactId>commons-collections</artifactId>
    <version>3.2.2</version>
</dependency>
<dependency>
    <groupId>org.apache.velocity</groupId>
    <artifactId>velocity-tools</artifactId>
    <version>2.0</version>
    <exclusions>
        <exclusion>
            <artifactId>struts-core</artifactId>
            <groupId>org.apache.struts</groupId>
        </exclusion>
        <exclusion>
            <artifactId>struts-taglib</artifactId>
            <groupId>org.apache.struts</groupId>
        </exclusion>
        <exclusion>
            <artifactId>struts-tiles</artifactId>
            <groupId>org.apache.struts</groupId>
        </exclusion>
    </exclusions>
</dependency>
<dependency>
    <groupId>commons-beanutils</groupId>
    <artifactId>commons-beanutils</artifactId>
    <version>1.9.2</version>
</dependency>
<dependency>
    <groupId>commons-digester</groupId>
    <artifactId>commons-digester</artifactId>
    <version>2.1</version>
</dependency>
<dependency>
    <groupId>commons-chain</groupId>
    <artifactId>commons-chain</artifactId>
    <version>1.2</version>
</dependency>
<dependency>
    <groupId>commons-validator</groupId>
    <artifactId>commons-validator</artifactId>
    <version>1.4.1</version>
</dependency>
<dependency>
    <groupId>dom4j</groupId>
    <artifactId>dom4j</artifactId>
    <version>1.6.1</version>
</dependency>
<dependency>
    <groupId>oro</groupId>
    <artifactId>oro</artifactId>
    <version>2.0.8</version>
</dependency>
<dependency>
    <groupId>sslext</groupId>
    <artifactId>sslext</artifactId>
    <version>1.10-4</version>
</dependency>
<dependency>
    <groupId>xml-apis</groupId>
    <artifactId>xml-apis</artifactId>
    <version>1.4.01</version>
</dependency>

1、各种情况的变量显示

         最直接的方式就是${变量名},但是这种写法在变量为null的情况会出问题,所以一般都使用$!{变量名}的方式进行;而且对于一个对象的某一个属性的取值,使用$!{对象名.属性名},这里要求类符合javabean的规范(setter和getter方法),也等效于$!{对象名.getXxx()},这是调用get方法(可得调用其他的可调用的方法都可以)。

        比起jsp,velocity的代码可以直接地和html代码写在一起,因为velocity引擎会进行处理,例如这里的id属性(貌似el表达式也支持这种写法)。

<input type="button" value='删除' class="table_btn table_btn_delete table_delete" id="${ccbox.id}">

2、取值与循环

        取值在前面实际已经提到了,使用${变量名}地方式就是取值,和循环地代码合在一起就是这样的

#foreach($ccbox in ${ccboxList})
    $!{ccbox.name}
#end

         使用“a in b”地形式,b是需要遍历地集合,a是每次遍历时的形式参数。

         和jsp里面地jstl标签不同的是,“结束“使用#end地方式表示,velocity地其他需要“结束”地标签也使用这个标记。

         使用`$foreach.count`也可以获取当前循环次数(从1开始),使用`$foreach.index`得到的序号是从0开始的,使用`$foreach.hasNext`更可以获取是否是最后一次循环,使用`$foreach.first`和`$foreach.last`可以分别获取开始和结束的元素。

         在循环体中使用`#break`可中止循环。

3、条件判断

         这是一个判断字符串不为空的时候进行输出的语法

#if("$!{ccbox.company}" != "")
    $!{ccbox.company}
#end

         在判断地条件表达式为true的时候才会执行被包裹的表达式。

4、包含其他文件

        这里由两个语法,

- `#parse`会将包含的文件中的内容当作类似源代码来处理,文件内容会进行velocity模板方面的解析;
- `#include`则会仅仅将文件内容当作普通文本进行处理,原封不动放进结果中

        用法类似于

<div class="foot">#parse("foot.html")</div>

5、宏

        类似于函数,在velocity-tools中定义了很多,和spring mvc结合使用的时候spring也有提供一些(需要依赖velocity-tools支持),使用#name(参数)的形式进行使用,下面是使用spring的国际化功能

<span class="right">#springMessage("COMMON_system_name")</span>

        spring的url路经计算功能(这样写得到的结果是基于项目根路径的)

<script src='#springUrl("/js/navi.js")'></script>

       enjoy!!

© 著作权归作者所有

阿信sxq

阿信sxq

粉丝 231
博文 83
码字总数 73652
作品 1
成都
后端工程师
私信 提问
使用 Velocity 实现客户端和服务器端模板

Velocity 是一种通用的、开放源代码的模板解决方案,可以在报告生成/数据转换应用程序中独立使用,也可以在 MVC 模型框架中作为视图组件。本文中,Sing Li 介绍了 Velocity,并说明如何将其模...

红薯
2008/10/05
1K
1
spring3mvc集成velocity

1、导入velocity库 访问Velocity位于http://jakarta.apache.org/velocity的主页,到官网下载velocity库,解压后将里面的velocity-1.7.jar拷贝到sping项目工程里面的web库里,另外,由于veloc...

java-苦苦甜甜
2012/10/15
466
1
MVC三种模板的比较

网上看的一篇,转如下: http://blog.sina.com.cn/s/blog_4adf62ab0100ryvb.html http://www.tuicool.com/articles/63mAvqy Velocity浅析及与Jsp、Freemarker对比 (2011-03-17 21:37:45) 转载......

强子哥哥
2016/05/19
401
0
TinyTemplate模板引擎火热出炉,正式开源了~~~

涉水模板引擎领域,纯属不小心。 在此对以下人员表示强烈感谢与致敬: @sub jetbrick作者 @sept @webit webit作者 @罗格林 rythm作者 @闲.大赋 beetl作者 以及许许多多虽然没有列出来,但是在...

悠悠然然
2014/06/18
3.2K
29
velocity用户指南 超全面的中文教材 分享

1. 关于 Velocity 用户指南旨在帮助页面设计者和内容提供者了解 Velocity 和其简单而又强大的脚本语言( Velocity Template Language (VTL) )。本指南中有很多示例展示了用 Velocity 来讲动...

整理秀逗的脑袋
2011/12/08
7.9K
13

没有更多内容

加载失败,请刷新页面

加载更多

centos7 安装 mysql5.7 版本(全)

centos 安装 版本说明 :centos7,mysql5.7 ,不是 centos7 可能有些命令不兼容 安装 mysql-server # 下载并安装 mysql yum wget -i -c http://dev.mysql.com/get/mysql57-community-relea......

sanri1993
26分钟前
3
0
Spring3.x升级到Spring4.x-5.x时关于MappingJacksonHttpMessageConverter的报错问题

在Spring4.x或者以上的版本强使用(不然会报错): org.springframework.http.converter.json.MappingJackson2HttpMessageConverter 如果是Spring4.0获者以下的版本可以使用MappingJacksonH...

code-ortaerc
29分钟前
3
0
OSG 渲染状态污染到其它节点怎么解决?

在根节点补上初始状态

洛克人杰洛
30分钟前
3
0
grid 布局 设置行列间距

本文转载于:专业的前端网站➪grid 布局 设置行列间距 <!DOCTYPE html><html lang="zh"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="widt......

前端老手
43分钟前
3
0
spring-data-elasticsearch 和 Jackson 配合使用的bug

下面先简单描述项目。 项目依赖: dependencies { implementation group: 'org.springframework.boot', name: 'spring-boot-starter-data-elasticsearch', version: '2.1.0.RELEASE'......

Landas
44分钟前
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部