项目中用到的freemarker

freemarker的中文乱码问题,在项目过程总是遇到,记录下来,方便以后运用。项目中两处用到freemarker,一是邮件发送静态页面。二是做统计时,要用flash的饼图和柱状图显示,在网上找到一个,只需要让配置的xml动态变化,用freemarker动态生成其配置文件。首先,freemarker是支持国际化的,模板的文件名如:bargain_zh_CN.ftl,要加上_zh_CN。把写的程序贴上来方便查。

public class TemplateConfiguration {
	
	/**
	 * 传入装有信息的root,模板文件所在的路径pah和模板文件名fileName
     * 返回的是经过map信息改变后的摸板内容
	 */
	 public static String getEmailContext(Map root,String path,String fileName) throws Exception{
			Configuration cfg = new Configuration();
			cfg.setEncoding(Locale.getDefault(), "UTF-8");
			cfg.setDirectoryForTemplateLoading(new File(path));
			cfg.setObjectWrapper(new DefaultObjectWrapper());
			cfg.setCacheStorage(new freemarker.cache.MruCacheStorage(20,250));
			
			Template temp = cfg.getTemplate(fileName);
			temp.setEncoding("UTF-8");
			java.io.StringWriter stringWriter = new StringWriter();
			Writer out = new BufferedWriter(stringWriter);
			temp.process(root, out);
			out.flush();
			//System.out.println(stringWriter.toString());
			return stringWriter.toString();
	}
	 
	 /*
	  * 获取信息生成flash配置文件的xml
      *root 中为要要写入模板中的信息,path为模板所在路径,fileName为模板文件名
      *outFile为生成文件的路径和文件名(*.xml,*.html,.......) 
	  */
	 public static void getTemplateContext(Map root,String path,String fileName,String outFile) throws Exception{
			Configuration cfg = new Configuration();
			cfg.setEncoding(Locale.getDefault(), "UTF-8");
			cfg.setDirectoryForTemplateLoading(new File(path));
			cfg.setObjectWrapper(new DefaultObjectWrapper());
			cfg.setCacheStorage(new freemarker.cache.MruCacheStorage(20,250));
			
			Template temp = cfg.getTemplate(fileName);
			temp.setEncoding("UTF-8");
			Writer writerFile = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile),"UTF-8"));
			temp.process(root,writerFile);
			writerFile.flush();
	}
	 
}
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值