guanxf

          我的博客:http://blog.sina.com.cn/17learning

            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            71 隨筆 :: 1 文章 :: 41 評論 :: 0 Trackbacks
          1、Controller:
                         Map<String, Object> rootMap = new HashMap<String, Object>();
          ootMap.put("list",getMusicPublisList(page.getList()));
          String templateName="appweb/music/index.ftl";
            Render appRender=new AppFreeMarkerRender(rootMap,templateName);
            this.render(appRender);
          2、AppFreeMarkerRender(在FreeMarkerRender上修改):
          package com.microcorecn.common.utils;
          import java.io.PrintWriter;
          import java.util.Enumeration;
          import java.util.HashMap;
          import java.util.Locale;
          import java.util.Map;
          import java.util.Properties;
          import javax.servlet.ServletContext;
          import com.jfinal.render.Render;
          import com.jfinal.render.RenderException;
          import freemarker.template.Configuration;
          import freemarker.template.ObjectWrapper;
          import freemarker.template.Template;
          import freemarker.template.TemplateException;
          import freemarker.template.TemplateExceptionHandler;
          /**
           * FreeMarkerRender.
           */
          public class AppFreeMarkerRender extends Render {
          private static final long serialVersionUID = -7649769283048920381L;
          private transient static final String encoding = getEncoding();
          private transient static final String contentType = "text/html; charset=" + encoding;
          private String templateName;
          private Map<String, Object>  rootMap;
          public AppFreeMarkerRender(Map<String, Object> rootMap, String templateName) {
            this.templateName=templateName;
            this.rootMap=rootMap;
          }
              
          @SuppressWarnings({"unchecked", "rawtypes"})
          public void render() {
          response.setContentType(contentType);
                  Enumeration<String> attrs = request.getAttributeNames();
          Map root = new HashMap();
          while (attrs.hasMoreElements()) {
          String attrName = attrs.nextElement();
          root.put(attrName, request.getAttribute(attrName));
          }
                   root.putAll(rootMap);
                   
          PrintWriter writer = null;
                  try {
          Template template = FreemarkerUtil.getAppConfiguration().getTemplate(this.templateName);
          writer = response.getWriter();  //一邊請求,一邊render
          template.process(root, writer); // Merge the data-model and the template
          } catch (Exception e) {
          throw new RenderException(e);
          }
          finally {
          if (writer != null)
          writer.close();
          }
          }
          }
          3、FreemarkerUtil :
          package com.microcorecn.common.utils;
          import java.io.BufferedWriter;
          import java.io.File;
          import java.io.FileOutputStream;
          import java.io.IOException;
          import java.io.OutputStreamWriter;
          import java.io.StringWriter;
          import java.io.Writer;
          import java.util.Enumeration;
          import java.util.HashMap;
          import java.util.Map;
          import javax.servlet.http.HttpServletRequest;
          import javax.servlet.http.HttpServletResponse;
          import com.jfinal.kit.PathKit;
          import com.jfinal.render.FreeMarkerRender;
          import freemarker.cache.FileTemplateLoader;
          import freemarker.template.Configuration;
          import freemarker.template.DefaultObjectWrapper;
          import freemarker.template.Template;
          /**
           * freemarker生成html的工具類
           * 
           * @author Administrator
           * 
           */
          public class FreemarkerUtil {
          //保存所有參數(shù),js路徑,cs路徑等
          private static Map<String, Object> releaseParams = new HashMap<String, Object>();
          static{
          //releaseParams.put("csspath", "");
          }
          //配置
          private static Configuration config = null;
          private static Configuration appConfig = null;
          /**
          * appConfig配置所有參數(shù)
          * 重寫freemarker中的  reader方法,讀取該配置文件
          * @return
          */
          public static Configuration getAppConfiguration()
          {
          if(appConfig == null)
          {
          //從freemarker中獲取所有配置
          appConfig = (Configuration)FreeMarkerRender.getConfiguration().clone();
          try {
          //設(shè)置模板路徑
          /* config.setDirectoryForTemplateLoading(new File(PathKit.getWebRootPath()));
          config.setObjectWrapper(new DefaultObjectWrapper());*/
          appConfig.setDirectoryForTemplateLoading(new File(PathKit.getWebRootPath()+"/WEB-INF/views/"));
          appConfig.setObjectWrapper(new DefaultObjectWrapper());   
          } catch (IOException e) {
          // TODO log
          }
          }
          return appConfig;
          }
          posted on 2013-05-19 14:16 管先飛 閱讀(4965) 評論(2)  編輯  收藏 所屬分類: Jfinal

          評論

          # re: Jfinal讀取Freemarker后renderHtml 源碼 2015-09-23 15:53 斯蒂芬
          撒的發(fā)生  回復(fù)  更多評論
            

          # re: Jfinal讀取Freemarker后renderHtml 源碼 2015-09-23 15:53 斯蒂芬
          撒的發(fā)生的  回復(fù)  更多評論
            

          主站蜘蛛池模板: 汉阴县| 胶州市| 田阳县| 永济市| 敦化市| 景德镇市| 栾城县| 遂川县| 双江| 鸡泽县| 乐昌市| 临潭县| 苏尼特右旗| 吴旗县| 华池县| 鸡泽县| 延川县| 中方县| 安吉县| 环江| 榆林市| 连平县| 佳木斯市| 卓资县| 叙永县| 宁阳县| 布尔津县| 麦盖提县| 龙川县| 上虞市| 溆浦县| 深水埗区| 鸡东县| 四川省| 南木林县| 库伦旗| 深州市| 惠东县| 屯昌县| 钟祥市| 错那县|