FreeMarker 模版引擎执行动态模版_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > FreeMarker 模版引擎执行动态模版

FreeMarker 模版引擎执行动态模版

 2014/10/14 15:19:32  guohf  程序员俱乐部  我要评论(0)
  • 摘要:/***FreeMarker模版引擎工具类**@version1.0*/publicclassFreeMarkerUtils{/***执行动态模版*@paramtemplateName*模版名称*@paramtemplateContent*模版内容*@paramencoding*编码格式*@paramdata*数据集*@return*@throwsException*/publicstaticStringexecuteFreeMarkerFromStringTemplate
  • 标签:执行
class="java" name="code">/**
 * FreeMarker 模版引擎工具类
 * 
 * @version 1.0 
 */
public class FreeMarkerUtils {
	
	/**
	 * 执行动态模版
	 * @param templateName
	 * 			模版名称
	 * @param templateContent
	 * 			模版内容
	 * @param encoding
	 * 			编码格式
	 * @param data
	 * 			数据集
	 * @return
	 * @throws Exception
	 */
	public static String executeFreeMarkerFromStringTemplate(String templateName,String templateContent,String encoding, Map<String,Object> data) throws Exception{
		String result = "";
		Writer out = null;
		try{
			Configuration cfg = new Configuration();
			if(data==null) data=new HashMap<String, Object>();
			data.put("DateMethodUtil", new DateMethod());
			out = new StringWriter(2048);
			StringTemplateLoader stringLoader = new StringTemplateLoader();
			stringLoader.putTemplate(templateName,templateContent);
			cfg.setTemplateLoader(stringLoader);
			Template temp = cfg.getTemplate(templateName, encoding);
			temp.process(data, out);
			out.flush();
			result = out.toString();
		}catch (Exception e) {
			throw e;
		}finally{
			out.close();
		}
		return result;
	}
	
	/**
	 * 日期运算函数
	 *
	 */
	public static class DateMethod implements TemplateMethodModelEx{
		@SuppressWarnings("rawtypes")
		public Object exec(List arguments) throws TemplateModelException {
			Date date = ((SimpleDate) arguments.get(0)).getAsDate();
	        String type = arguments.get(1).toString(); 
	        Integer num = ((SimpleNumber)arguments.get(2)).getAsNumber().intValue();
	        Calendar localCalendar = Calendar.getInstance();  
	        localCalendar.setTime(date);
	        if("d".equalsIgnoreCase(type)){
	        	int i = localCalendar.get(Calendar.DATE);  
	        	localCalendar.set(Calendar.DATE, i + num);
	        }else if("m".equalsIgnoreCase(type)){
	        	int i = localCalendar.get(Calendar.MONTH);  
	        	localCalendar.set(Calendar.MONTH, i + num);
	        }else if("y".equalsIgnoreCase(type)){
	        	int i = localCalendar.get(Calendar.YEAR);  
	        	localCalendar.set(Calendar.YEAR, i + num);
	        }
			return localCalendar.getTime();
		}
	}	
	
}

?

发表评论
用户名: 匿名