public class VelocityHelper { public VelocityEngine parseTemplate(String templateFilePath) throws Exception{ VelocityEngine ve = new VelocityEngine(); Properties properties = new Properties(); properties.setProperty(ve.FILE_RESOURCE_LOADER_PATH,templateFilePath); properties.setProperty(Velocity.ENCODING_DEFAULT, "utf-8"); properties.setProperty(Velocity.INPUT_ENCODING, "utf-8"); properties.setProperty(Velocity.OUTPUT_ENCODING, "utf-8"); ve.setProperty(RuntimeConstants.RUNTIME_LOG_LOGSYSTEM, new NullLogChute()); ve.init(properties); return ve; } }
/** * 通过velocity 模板生成静态HTML 文件 * @param htmlName 文件名称 * @param toFilePath 模块文件位置 生成路径为 static /html/news/xxx.html * @param vmTemPath velocity模板文件路径 * @param map 集合 * @param contextName 模板循环名称 */ public void createHtmlByVelocity(String htmlName,String toFilePath,String tmpName, String vmTemPath,Map<String,Object> params,String contextName){ try { VelocityEngine ve = velocityHelper.parseTemplate(vmTemPath); fileUploadHelper.createFolder(toFilePath); String filePath=toFilePath+File.separator+htmlName+".html"; FileOutputStream fos = new FileOutputStream(filePath); BufferedWriter writer = new BufferedWriter(new OutputStreamWriter( fos, Const.EncodingUTF8)); Template velocity_template =ve.getTemplate(tmpName); VelocityContext context = new VelocityContext(); context.put(contextName, params); velocity_template.merge(context,writer ); writer.close(); } catch (Exception e) { log.error("文件路径失败!",e); throw new SinotransException("文件路径失败!", e); } }
调用处代码
String vmTemPath = request.getSession().getServletContext().getRealPath("/")+ "/WEB-INF/velocity/"; String tmpName="news.vm"; Map<String,Object> params = new HashMap<String,Object>(); params.put("title", title); params.put("context", context); params.put("pathList", pathList); params.put("date", TimeUtil.formatDate(new Date(), "yyyy-MM-dd")); params.put("newsId", fileId); exportFileUtil.createHtmlByVelocity(fileId, fileUploadHelper.getHtmlPath()+File.separator+"news", tmpName, vmTemPath, params, "newsMap");
时间长了记不住 留下来当个小笔记。