Velocity模版使用

引入的jar包:

1 import org.apache.velocity.Template;
2 import org.apache.velocity.VelocityContext;
3 import org.apache.velocity.app.Velocity;
4 import org.apache.velocity.app.VelocityEngine;
5 import org.apache.velocity.tools.generic.DateTool;
6 import org.apache.velocity.tools.generic.NumberTool;

jar包可以去官网下载

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

样例代码:

 1 /**
 2      * 生成vm
 3      * @param vmpackage vm所在的包名
 4      * @param vmname
 5      * @param listname
 6      * @param objects
 7      * @return
 8      * @throws Exception
 9      */
10     public static String generateVm(String vmpackage, String vmname, String listname, List<? extends Object> objects) throws Exception{
11         if(objects.size()>0){
12             Properties p = new Properties();
13             String classpath = VelocityUtils.class.getResource("/").getPath();//取得src的路径
14             p.setProperty(VelocityEngine.FILE_RESOURCE_LOADER_PATH, classpath + vmpackage);
15             //设置velocity的编码
16             p.setProperty(Velocity.ENCODING_DEFAULT, "UTF-8");
17             p.setProperty(Velocity.INPUT_ENCODING, "UTF-8");
18             p.setProperty(Velocity.OUTPUT_ENCODING, "UTF-8");
19             //初始化并取得Velocity引擎
20             VelocityEngine ve = new VelocityEngine();
21             ve.init(p);
22             //取得velocity的模版
23             Template t = null;
24             t = ve.getTemplate(vmname);
25             //取得velocity的上下文context
26             VelocityContext context = new VelocityContext();
27             context.put("number", new NumberTool());
28             context.put("date", new DateTool());
29             context.put(listname, objects);
30             //输出流
31             StringWriter writer = new StringWriter();
32             //转换输出
33             t.merge(context, writer);
34             return writer.toString();
35         }else{
36             return null;
37         }
38     }

上面函数调用:

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

模版文件的内容例子:

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <rows>
 3     #foreach($b in $bs)
 4     <row id="$b.detailinfoid">
 5         <cell title="$!date.format(‘yyyy-MM-dd HH:mm‘,$b.time)">$!date.format(‘HH:mm‘,$b.time)</cell>
 6         <cell>$!number.format($b.gongkoukaida)</cell>
 7         <cell>$!number.format($b.xianluxiajiang)</cell>
 8         #if($b.taiermianchu==1)
 9         <cell>是</cell>
10         #else
11         <cell>否</cell>
12         #end
13         <cell>$!b.taixinyin</cell>
14         <cell>$!b.mailv</cell>
15         #if($b.xueyagao || $b.xueyadi)
16         <cell>$!b.xueyagao/$!b.xueyadi</cell>
17         #else
18         <cell></cell>
19         #end
20         <cell>$!b.teshuzhiliao</cell>
21         <cell>$!b.qianming</cell>
22         <cell><![CDATA[<img src="img/emr/del_package.png" alt="删除" style="cursor:pointer;" onclick="javascript:delDetailInfo(‘$!b.detailinfoid‘)"/>]]></cell>
23     </row>
24     #end
25 </rows>

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

时间: 2024-11-10 00:13:08

Velocity模版使用的相关文章

Spring整合Velocity模版引擎

1. 首先通过pom.xml自动加载velocity扩展包到工程: 1 <dependency> 2 <groupId>velocity</groupId> 3 <artifactId>velocity</artifactId> 4 <version>1.5</version> 5 </dependency> 2. 然后在自动装载bean的xml里边添加如下配置: 1 <bean id="vel

Velocity模版加载(classpath、webapp)

classpath资源路径加载: velocity.properties文件配置 file.resource.loader.class = org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader input.encoding = UTF-8 output.encoding = UTF-8 Servlet代码 /**  * cn.jbit.servlet.ListServlet  * 2014-5-8  * gyy  

Velocity模版引擎使用总结

Velocity是一个基于java的模板引擎.它允许任何人仅仅简单的使用模板语言来引用由java代码定义的对象. 当Velocity应用于web开发时,界面设计人员可以和java程序开发人员同步开发一个遵循MVC架构的web站点,也就是说,页面设计人员可以只 关注页面的显示效果,而由java程序开发人员关注业务逻辑编码.Velocity将java代码从web页面中分离出来,这样为web站点的长期维护提 供了便利,同时也为我们在JSP和PHP之外又提供了一种可选的方案. Velocity基本语法和

velocity 显示List和Map方法

一.遍历个map类型 1.先看后台java程序Java代码 Map<String,String> paramValues=new HashMap<String, String>();      ***      *** 中间赋值操作省略了      ***      data.put("paramValues", paramValues);//传值给velocity 2.前台velocity模板文件中取出这个map的key和valueJava代码 #foreac

模板引擎:Velocity&amp;FreeMarker(转)

Velocity,名称字面翻译为:速度.速率.迅速,用在Web开发里,用过的人可能不多,大都基本知道和在使用Struts,到底Velocity和Struts(Taglib和Tiles)是如何联系?在技术上Velocity要比Struts Struts(Taglib和Tiles)先进,单从技术上考虑可以考虑Velocity:而Struts用的非常普遍,这样的人才也很多,所以对于公司来说,选择Struts的人才容易点.毕竟Velocity提供了一个很好的思维方式,给大家换了一种思考的方式. Velo

MVC框架显示层——Velocity技术

转自:  http://blog.csdn.net/fasttalk/article/details/398059 Velocity,名称字面翻译为:速度.速率.迅速,用在Web开发里,用过的人可能不多,大都基本知道和在使用Struts,到底Velocity和Struts(Taglib和Tiles)是如何联系?在技术上Velocity要比Struts Struts(Taglib和Tiles)先进,单从技术上考虑可以考虑Velocity:而Struts用的非常普遍,这样的人才也很多,所以对于公司来

velocity详解

(1)为什么要使用模版语言? 在服务器端可以使用 Velocity 处理模板和生成的动态内容(HTML.XML等).这和 JSP 技术的目标非常接近.但是,JSP 模型可以毫无阻碍地访问底层的 Servlet API 和 Java 编程语言.它基本上是一种在很大程度上开放的访问模型.而作为一种完全自包含的模板引擎和脚本解释器,Velocity 拥有完全封闭的模型.任何针对系统和/或 Java 编程语言的访问都必须明确地启用.默认情况,Velocity 模板中不能访问 Java 编程语言的任何方面

【转】velocity 显示List和Map方法

一.遍历个map类型 1.先看后台java程序Java代码 Map<String,String> paramValues=new HashMap<String, String>();      ***      *** 中间赋值操作省略了      ***      data.put("paramValues", paramValues);//传值给velocity 2.前台velocity模板文件中取出这个map的key和valueJava代码 #foreac

Apache Solr Velocity模板注入RCE漏洞复现

一.Apache Solr介绍 Solr是一个独立的企业级搜索应用服务器,它对外提供类似于web-service的API接口,用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引,也可以通过http get操作提出查找请求,并得到XML格式的返回结果. 二.漏洞描述 Solr中存在VelocityResponseWriter组件,攻击者可以构造特定请求修改相关配置,使VelocityResponseWriter组件允许加载指定模板,进而导致Velocity模版注入远程命令