guanxf

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

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            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 {
          //保存所有參數,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配置所有參數
          * 重寫freemarker中的  reader方法,讀取該配置文件
          * @return
          */
          public static Configuration getAppConfiguration()
          {
          if(appConfig == null)
          {
          //從freemarker中獲取所有配置
          appConfig = (Configuration)FreeMarkerRender.getConfiguration().clone();
          try {
          //設置模板路徑
          /* 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 斯蒂芬
          撒的發生  回復  更多評論
            

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

          主站蜘蛛池模板: 博爱县| 海门市| 光泽县| 绥中县| 桦川县| 浮山县| 黄龙县| 德庆县| 门源| 榆社县| 大连市| 孙吴县| 大渡口区| 固阳县| 兰西县| 榆社县| 阿拉善盟| 达拉特旗| 沭阳县| 吴忠市| 白水县| 永宁县| 贵定县| 兴山县| 克什克腾旗| 洛宁县| 武乡县| 贵德县| 诸暨市| 雅江县| 巴彦淖尔市| 北安市| 玛沁县| 奈曼旗| 仪陇县| 通渭县| 克什克腾旗| 宿迁市| 高邮市| 石狮市| 衢州市|