<!-- 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. jquery 改变标签可见状态的几种方式

    第一种: $(selector).show(); //立即显示指定标签 $(selector).hide();//立即隐藏指定标签 第二种: $(selector).fadeIn(ms);//在指定毫 ...

  2. python__系统 : 线程

    线程之间,全局变量可以共享,但是局部变量依然是不共享的,线程的创建方式: threading.Thread(),还可以定义一个类继承Thread,重写他的run方法,具体和进程的写法一样. 那么,线程 ...

  3. yii2深入理解之内核解析

    一.前言 首先,yii2最为为数不多的PHP主流开源框架,受欢迎程度不亚于laravel和TP.个人认为,研究这些框架底层代码是非常有助于自身代码编程思想的提升和代码简化程度和质量的提升的. 那么,话 ...

  4. cmd中编译java脚本 (2013-05-02-bd 写的日志迁移

    此前提是已经搭建好了jdk的编译环境! 先写一个java脚本如:建立一个HelloWord.java //public : 表示此类是公共的 一个java文件中只能有一个public类 //class ...

  5. McNay Art Museum【McNay艺术博物馆】

    McNay Art Museum When I was 17, I read a magazine artice about a museum called the McNay, once the h ...

  6. python基础之模块part2

    sys: sys模块不同于os模块,这个是跟Python解释器打交道的. sys.argv:返回一个文件名开头,包含后面输入内容的 列表 import sys res = sys.argv print ...

  7. 19,Ubuntu安装之python开发

      什么??公司要用Ubuntu(乌班图)?不会用??怎么进行python开发??? 乌班图操作系统下载地址:http://releases.ubuntu.com/18.04/ubuntu-18.04 ...

  8. USACO Section1.5 Number Triangles 解题报告

    numtri解题报告 —— icedream61 博客园(转载请注明出处)--------------------------------------------------------------- ...

  9. Bit与Byte的区别

    在工作中遇到一些概念模糊的地方, 需要记住了bit意为“位”或“比特”,是计算机运算的基础: byte意为“字节”,是计算机文件大小的基本计算单位: 说到usb2.0标准接口传输速率.许多人都将“48 ...

  10. CentOS 7.5 部署蓝鲸运维平台

    环境准备 官方建议 准备至少3台 CentOS 7 以上操作系统的机器 最低配置:2核4G 建议配置: 4核12G 以上 部署前关闭待安装主机之间防火墙,保证蓝鲸主机之间通信无碍 部署前关闭SELin ...