FreeMarker辅助

/**
 * FreeMarker 辅助类
 * @author Rubekid
 *
 */
public class FreeMarkerHelper {
    
    /**
     * 模板文件存放目录
     */
    private static final String TEMPLATE_PATH = "/templates/freemarker/";
    
    /**
     * 获取模板内容
     * @param tpl
     * @param rootMap
     * @return
     * @throws IOException
     * @throws TemplateException
     */
    public static String fetch(String tpl, Object rootMap) throws IOException, TemplateException{
        Template template = getTemplate(tpl);
        Writer out= new StringWriter();
        template.process(rootMap, out);
        String result = out.toString();
        out.flush();
        return result;
    }
    
    /**
     * 输出显示
     * @param tpl
     * @param rootMap
     * @param out
     * @throws IOException
     * @throws TemplateException
     */
    public static void display(String  tpl, Object rootMap, Writer out) throws IOException, TemplateException{
        Template template = getTemplate(tpl);
        template.process(rootMap, out);
        out.flush();
    }
    
    /**
     * 获取模板
     * @param tpl
     * @return
     * @throws IOException
     */
    private static Template getTemplate(String tpl) throws IOException{
        Configuration config = new Configuration();
        String path = WebUtils.getContextPath() + TEMPLATE_PATH;
        String name =  tpl;
        int pos = tpl.lastIndexOf("/");
        if(pos > -1){
            path += tpl.substring( 0, pos+1 );
            name += tpl.substring( pos+1 );
        }
        
        config.setDirectoryForTemplateLoading(new File(path));
        config.setObjectWrapper(new DefaultObjectWrapper());
        return  config.getTemplate(name ,"utf-8");
    }
    
    /**
     * 获取模板(通过字符串)
     * @param source
     * @throws IOException 
     */
    private static Template getTemplate(String name, String source) throws IOException{
        Configuration config = new Configuration();
        StringTemplateLoader loader = new StringTemplateLoader();
        loader.putTemplate(name, source);
        config.setTemplateLoader(loader);
        return config.getTemplate(name, "utf-8");
    }

 

posted @ 2014-09-19 11:55  rubekid  阅读(236)  评论(0编辑  收藏  举报