分享:老版本Jfinal系统如何使用上最新的EngineTemplate

Jfinal3.0,3.1发布之后,新的模板引擎受到了普遍的欢迎,小伙伴们纷纷使用。html

一些在3.0以前进行开发的系统,因为不支持该引擎,你们很纠结,因此写这样的一篇博文来和你们分享,java

但愿你们多多支持波总,支持JFINAL,支持模板引擎Template!express

首先创建BaseController.java文件:apache

package com.test;

import com.jfinal.core.Controller;
import com.jfinal.template.Engine;

public class BaseController extends Controller {
   
   public static final Engine engine = new Engine();
   
   public static Engine getEngine() {
      return engine;
   }
   
   public void renderTemplate(String view) {

      render(new TemplateRender(view));
   }
}

第二步,创建TemplateRender.java文件(这里注意放到您的项目包中)app

/**
 * Copyright (c) 2011-2017, James Zhan 詹波 (jfinal@126.com).
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.test;

import java.io.PrintWriter;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Map;
import com.jfinal.render.Render;
import com.jfinal.render.RenderException;
import com.jfinal.template.Engine;

/**
 * TemplateRender
 */
public class TemplateRender extends Render {
   
   private static Engine engine = BaseController.getEngine();
   
   private static final String contentType = "text/html; charset=" + getEncoding();
   
   public static void setEngine(Engine engine) {
      if (engine == null) {
         throw new IllegalArgumentException("engine can not be null");
      }
      TemplateRender.engine = engine;
   }
   
   public TemplateRender(String view) {
      this.view = view;
   }
   
   public String getContentType() {
      return contentType;
   }
   
   public void render() {
      response.setContentType(getContentType());
        
      Map<Object, Object> data = new HashMap<Object, Object>();
      for (Enumeration<String> attrs=request.getAttributeNames(); attrs.hasMoreElements();) {
         String attrName = attrs.nextElement();
         data.put(attrName, request.getAttribute(attrName));
      }
      
      PrintWriter writer = null;
        try {
           writer = response.getWriter();
           engine.getTemplate(view).render(data, writer);
      } catch (Exception e) {
         throw new RenderException(e);
      }
      finally {
         if (writer != null) {
            writer.close();
         }
      }
   }
   
   public String toString() {
      return view;
   }
}

第三步,配置Config.javaless

ui

afterJFinalStart()

方法中添加以下代码:this

Engine engine = BaseController.getEngine();
engine.setBaseTemplatePath(PathKit.getWebRootPath());
engine.setDevMode(true);

第四步,引入jfinal-3.1-template-engine.jarhtm

文件已上传到jfinal群    模板引擎

打完收工!

感谢波总指导使用!

相关文章
相关标签/搜索