<!-- https://mvnrepository.com/artifact/org.apache.velocity/velocity -->
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity</artifactId>
<version>1.7</version>
</dependency>

http://mvnrepository.com/artifact/org.apache.velocity

<!-- https://mvnrepository.com/artifact/org.apache.velocity/velocity-tools -->
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-tools</artifactId>
<version>2.0</version>
</dependency>

引入的jar包:

 import org.apache.velocity.Template;
import org.apache.velocity.VelocityContext;
import org.apache.velocity.app.Velocity;
import org.apache.velocity.app.VelocityEngine;
import org.apache.velocity.tools.generic.DateTool;
import org.apache.velocity.tools.generic.NumberTool;

jar包可以去官网下载

http://velocity.apache.org/engine/devel/

样例代码:

 /**
* 生成vm
* @param vmpackage vm所在的包名
* @param vmname
* @param listname
* @param objects
* @return
* @throws Exception
*/
public static String generateVm(String vmpackage, String vmname, String listname, List<? extends Object> objects) throws Exception{
if(objects.size()>0){
Properties p = new Properties();
String classpath = VelocityUtils.class.getResource("/").getPath();//取得src的路径
p.setProperty(VelocityEngine.FILE_RESOURCE_LOADER_PATH, classpath + vmpackage);
//设置velocity的编码
p.setProperty(Velocity.ENCODING_DEFAULT, "UTF-8");
p.setProperty(Velocity.INPUT_ENCODING, "UTF-8");
p.setProperty(Velocity.OUTPUT_ENCODING, "UTF-8");
//初始化并取得Velocity引擎
VelocityEngine ve = new VelocityEngine();
ve.init(p);
//取得velocity的模版
Template t = null;
t = ve.getTemplate(vmname);
//取得velocity的上下文context
VelocityContext context = new VelocityContext();
context.put("number", new NumberTool());
context.put("date", new DateTool());
context.put(listname, objects);
//输出流
StringWriter writer = new StringWriter();
//转换输出
t.merge(context, writer);
return writer.toString();
}else{
return null;
}
}

上面函数调用:

 String vmpagckage = "com/cpinfo/his/template/emr/";
String vmname = "partogram_detail_infos.vm";
String vm = VelocityUtils.generateGridVm(vmpagckage, vmname, "bs", ems); response.setContentType("text/xml;charset=utf-8");
PrintWriter pw = response.getWriter();
pw.print(vm);
pw.flush();
pw.close();

模版文件的内容例子:

 <?xml version="1.0" encoding="UTF-8"?>
<rows>
#foreach($b in $bs)
<row id="$b.detailinfoid">
<cell title="$!date.format('yyyy-MM-dd HH:mm',$b.time)">$!date.format('HH:mm',$b.time)</cell>
<cell>$!number.format($b.gongkoukaida)</cell>
<cell>$!number.format($b.xianluxiajiang)</cell>
#if($b.taiermianchu==1)
<cell>是</cell>
#else
<cell>否</cell>
#end
<cell>$!b.taixinyin</cell>
<cell>$!b.mailv</cell>
#if($b.xueyagao || $b.xueyadi)
<cell>$!b.xueyagao/$!b.xueyadi</cell>
#else
<cell></cell>
#end
<cell>$!b.teshuzhiliao</cell>
<cell>$!b.qianming</cell>
<cell><![CDATA[<img src="img/emr/del_package.png" alt="删除" style="cursor:pointer;" onclick="javascript:delDetailInfo('$!b.detailinfoid')"/>]]></cell>
</row>
#end
</rows>

模版文件的语法 等可以去官网看文档。

Velocity模版使用的更多相关文章

  1. Spring整合Velocity模版引擎

    1. 首先通过pom.xml自动加载velocity扩展包到工程: <dependency> <groupId>velocity</groupId> <art ...

  2. Java安全之Velocity模版注入

    Java安全之Velocity模版注入 Apache Velocity Apache Velocity是一个基于Java的模板引擎,它提供了一个模板语言去引用由Java代码定义的对象.它允许web 页 ...

  3. Velocity模版引擎使用总结

    Velocity是一个基于java的模板引擎.它允许任何人仅仅简单的使用模板语言来引用由java代码定义的对象. 当Velocity应用于web开发时,界面设计人员可以和java程序开发人员同步开发一 ...

  4. framMaker、Velocity模版引擎

    1.一种模板文件,可以自动加载数据到模板里面展现. 类似:Velocity 2.使用场景 1.web开发模式 WEB-INF/view/vm 在互联网公司的开发都是基于vm的开发,其次就是使用JS的框 ...

  5. Velocity模板引擎入门

    类似于PHP中的Smarty,Velocity是一个基于Java的模板引擎(template engine).它允许任何人仅仅简单的使用模板语言(template language)来引用由java代 ...

  6. velocity 显示List和Map方法

    一.遍历个map类型 1.先看后台java程序Java代码     Map<String,String> paramValues=new HashMap<String, String ...

  7. 【转】velocity 显示List和Map方法

    一.遍历个map类型 1.先看后台java程序Java代码     Map<String,String> paramValues=new HashMap<String, String ...

  8. 模板引擎:Velocity&FreeMarker(转)

    Velocity,名称字面翻译为:速度.速率.迅速,用在Web开发里,用过的人可能不多,大都基本知道和在使用Struts,到底Velocity和Struts(Taglib和Tiles)是如何联系?在技 ...

  9. Velocity资源

    这里有非常多的资源和示例提供给程序员,我们推荐您查阅我们提供的示例.文档和源代码.下面是一些非常有用的资源列表: 用户和开发者社区:可以通过mail-lists加入我们.mail-lists网页地址: ...

随机推荐

  1. js面向(基于)对象编程—类(原型对象)与对象

    JS分三个部分: 1. ECMAScript标准--基础语法 2. DOM  Document Object Model 文档对象模型 3. BOM  Browser Object Moldel 浏览 ...

  2. 【转载】C语言itoa()函数和atoi()函数详解(整数转字符C实现)

    本文转自: C语言itoa()函数和atoi()函数详解(整数转字符C实现) 介绍 C语言提供了几个标准库函数,可以将任意类型(整型.长整型.浮点型等)的数字转换为字符串. int/float to ...

  3. 准备篇(二)C语言

    因为C语言部分打算单独维护,所以 目录: 1. C语言基础篇(零)gcc编译和预处理 2. C语言基础篇(一)关键字 3. C语言基础篇(二)运算符 4. C语言指针篇(一)指针与指针变量 5. C语 ...

  4. Android面试收集录 Android入门

    1.Android的特点有哪些? 编程语言是Java或Kotlin,Android中的Java字节码是允许在Dalvik虚拟机上的 支持4大组件 Android内置了WebKit核心的浏览器,支持H5 ...

  5. Android面试收集录4 Fragment详解

    1.什么是Fragment? 你可以简单的理解为,Fragment是显示在Activity中的Activity. 它可以显示在Activity中,然后它也可以显示出一些内容. 因为它拥有自己的生命周期 ...

  6. MyBatis---缓存策略cache的使用

    一般在查询时使用 使用步骤 1.配置config.xml,开启缓存 <setting name=”cacheEnabled” value=”true” /> 2.在Mapper文件头指定使 ...

  7. 如何在一个顶级域名下用两个二级域名访问vps下的两个项目网站--完美解决骗

    本人是原址是http://www.webzhe.com/server/340 后经过本人的实践修改,增加截图,等具体的步骤,完美解决 如何在vps中设置二级域名开通子网站,这个问题涉及到两步:一首先要 ...

  8. 剑指Offer - 九度1519 - 合并两个排序的链表

    剑指Offer - 九度1519 - 合并两个排序的链表2013-11-30 22:04 题目描述: 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则.(hi ...

  9. Django笔记 —— MySQL安装

    最近在学习Django,打算玩玩网页后台方面的东西,因为一直很好奇但却没怎么接触过.Django对我来说是一个全新的内容,思路想来也是全新的,或许并不能写得很明白,所以大家就凑合着看吧- 本篇笔记(其 ...

  10. 编译gearman提示缺少boost

    编译german时提示缺少boost: checking for boostlib >= 1.39... configure: We could not detect the boost lib ...