首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

Freemarker模板资料返回字符串

2012-06-26 
Freemarker模板文件返回字符串首先,先创建一个ftl文件:div stylewidth:100%font-size:12pxHello ${

Freemarker模板文件返回字符串
     首先,先创建一个ftl文件:
   

<div style="width:100%;font-size:12px;">Hello ${name}(${getUserAge(name)})</div>

    之后,创建一个java应用程序类:
  
package freemarker;import java.io.File;import java.io.IOException;import java.io.StringWriter;import java.io.Writer;import java.util.HashMap;import java.util.Locale;import java.util.Map;import freemarker.template.Configuration;import freemarker.template.DefaultObjectWrapper;import freemarker.template.Template;import freemarker.template.TemplateException;/** *  * @Desc 获取FTL文件生成的字符串,以供调用 * @author xujp1 * @version Revision: 1.00 Date: May 9, 2012 */public class GenerateStringFromFtl{    private static Configuration conf = null;    public static void main(String args[])    {        conf = new Configuration();        try        {            conf.setDirectoryForTemplateLoading(new File("WebRoot/WEB-INF/template"));        }        catch (IOException e)        {            e.printStackTrace();        }        conf.setObjectWrapper(new DefaultObjectWrapper());        conf.setLocale(Locale.CHINA);        conf.setSharedVariable("getUserAge", new GetUserAge());//自定义方法供调用        conf.setDefaultEncoding("utf-8");        conf.setClassicCompatible(true);//处理空值为空字符串        String tempReturn = "";        Map<String, Object> root = new HashMap<String, Object>();        String name = "xujp1";        root.put("name", name);        try        {            tempReturn = generateHtmlFromFtl(root, "hellouser.ftl");        }        catch (IOException e)        {            e.printStackTrace();        }        catch (TemplateException e)        {            e.printStackTrace();        }        System.out.println(tempReturn);    }    public static String generateHtmlFromFtl(Object root, String tempPath) throws IOException, TemplateException    {        Template temp = conf.getTemplate(tempPath);        Writer out = new StringWriter(2048);        temp.process(root, out);        return out.toString();    }}

    由于有用到自定义方法,因此在建个方法类:
  
package freemarker;import java.util.List;import freemarker.template.SimpleScalar;import freemarker.template.TemplateMethodModel;import freemarker.template.TemplateModelException;/** *  * @Desc freemarker中使用的方法,根据传入的参数返回相应的值 * @author xujp1 * @version Revision: 1.00 Date: May 9, 2012 */public class GetUserAge implements TemplateMethodModel{    /* (non-Javadoc)     * @see freemarker.template.TemplateMethodModel#exec(java.util.List)     */    @SuppressWarnings("unchecked")    @Override    public Object exec(List args) throws TemplateModelException    {        if(args.size() != 1)        {            throw new TemplateModelException("Wrong arguments!");        }        int age = 0;        if("xujp1".equalsIgnoreCase((String)args.get(0)))            age = 25;        else            age = 24;        return new SimpleScalar(String.valueOf(age));    }}

   运行后,得到所要的结果
   

热点排行