groovy : velocity 模板
发布时间:2020-12-14 16:37:26 所属栏目:大数据 来源:网络整理
导读:从 http://mirror.bit.edu.cn/apache//velocity/engine/1.7/ 下载 velocity-1.7.zip 解压后将?velocity-1.7-dep.jar copy to GROOVY_HOME/lib/ Vm_test.groovy import groovy.sql.Sql;import java.io.*;import java.util.Properties; import org.apache.velo
从 http://mirror.bit.edu.cn/apache//velocity/engine/1.7/ 下载 velocity-1.7.zip 解压后将?velocity-1.7-dep.jar copy to GROOVY_HOME/lib/ Vm_test.groovy import groovy.sql.Sql; import java.io.*; import java.util.Properties; import org.apache.velocity.app.Velocity; import org.apache.velocity.app.VelocityEngine; import org.apache.velocity.VelocityContext; import org.apache.velocity.Template; import org.apache.velocity.runtime.RuntimeConstants; import org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader; import org.apache.velocity.exception.ParseErrorException; import org.apache.velocity.exception.ResourceNotFoundException; class Vm_test { static void main(args){ def fundcode =''; if (args.size() ==1){ fundcode = args[0]; } else { println " usage: groovy vm_test fundcode "; return; } assert fundcode.size() ==6 String path = "/jsp/"; String templateFile = "vm/result.vm"; String fileName = path + templateFile; System.out.println(fileName); File file = new File(fileName); if (!file.exists()) { println("文件不存在"); return; } String Driver; String URL; String user; String pass; try { Properties props = new Properties(); File infile = new File("./","mysql.properties"); FileInputStream ins = new FileInputStream(infile); props.load(ins); ins.close(); Driver = props.getProperty("driver"); URL = props.getProperty("url"); user = props.getProperty("username"); pass = props.getProperty("password"); } catch (IOException ex) { ex.printStackTrace(); } Sql db = Sql.newInstance(URL,user,pass,Driver); def stmt ="select rq,jz,ljjz from jjjz where dm= ? order by rq"; int j =0; // data model // Map<String,Object> root = new HashMap<String,Object>(); ArrayList<Map<String,Object>> alist = new ArrayList<Map<String,Object>>(); db.eachRow(stmt,[fundcode]){ r -> alist.add(['rq':r[0],'jz':r[1],'lljz':r[2]]); j++; } db.close(); // 创建引擎 VelocityEngine ve = new VelocityEngine(); //ve.setProperty(RuntimeConstants.RESOURCE_LOADER,"classpath"); //ve.setProperty("classpath.resource.loader.class",ClasspathResourceLoader.class.getName()); // 设置模板加载路径,这里设置的是vm下 Velocity.setProperty(Velocity.RESOURCE_LOADER,path); Velocity.setProperty(Velocity.FILE_RESOURCE_LOADER_PATH,path); Template tp = null; try { // 进行初始化操作 ve.init("velocity.properites"); // 加载模板,设定模板编码 tp = ve.getTemplate(templateFile,"gbk"); // 也可以使用 // loadpath是路径地址 // 设置初始化数据 VelocityContext context = new VelocityContext(); context.put("title","查询基金净值"); context.put("fundcode",fundcode); context.put("rows",alist); // outfile def fn = "${fundcode}.html" def outfile = new File(fn); def fos = new FileOutputStream(outfile); Writer out = new BufferedWriter(new OutputStreamWriter(fos,"GBK")); // 处理合并 if (tp != null) tp.merge(context,out); out.flush(); out.close(); println " output ${j} rows"; println " outfile: ${fn}"; } catch( ResourceNotFoundException rnfe ) { System.out.println("Example : error : cannot find template " + templateFile ); } catch( ParseErrorException pee ) { System.out.println("Example : Syntax error in template " + templateFile + ":" + pee ); } catch (Exception e) { e.printStackTrace(); } } } vm/result.vm <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=GBK" /> <title>查询基金净值 </title> <style> table {border-collapse:collapse;} th,td {border: black solid 1px; font-size:12px; padding-left:5px; white-space:nowrap;} </style> </head> <body> <h3>$fundcode </h3> <table> <thead> <tr> <th>日期 </th> <th>基金净值 </th> <th>累计净值 </th> </tr> </thead> <tbody> #foreach( $row in $rows) <tr> <td>$row.rq</td> <td>$row.jz</td> <td>$row.lljz</td> </tr> #end </tbody> </table> </body> </html>通过查看源码终于发现velocity的vm文件是以项目工程名为根的,也就是说把文件要放在项目工程的目录下, 才能直接使用getTemplate("example.vm").如果要放在子目录下,比如放在项目的子目录vm/下, 则必须使用如下代码才行: ?getTemplate("vm/example.vm"); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |