项目中用到了Velocity,要生成一些XML文件,template文件(*.vm)也打包在Jar里。Velocity如何加载呢?分如下几个步。
设置Velocity Property
1 2 3 4 5 6 |
ve = new VelocityEngine(); ve.setProperty(RuntimeConstants.RESOURCE_LOADER, "string"); ve.setProperty("classpath.resource.loader.class", ClasspathResourceLoader.class.getName()); ve.init(); |
读template文件到StringBuilder
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
private static StringBuilder getTemplateContent(String templateName) { InputStream inStream = A.class.getResourceAsStream(templateName); StringBuilder builder = new StringBuilder(); BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inStream)); String line; try { while ((line = bufferedReader.readLine()) != null) { builder.append(line).append("\n"); } } catch (IOException e) { logger.debug(StackTracePrinter.printToStr(e)); } finally { if (inStream != null){ try { inStream.close(); } catch (IOException e) { logger.debug(StackTracePrinter.printToStr(e)); } } } return builder; } |
加载StringBuilder里的模板
1 2 3 4 5 6 7 8 9 |
private static Template getVelocityTemplate(String templateName) { StringBuilder builder = getTemplateContent(templateName); StringResourceRepository repo = StringResourceLoader.getRepository(); repo.putStringResource(templateName, builder.toString()); Template t = ve.getTemplate(templateName); return t; } |
大功造成,用返回的Template对象加Context吧。