文档章节

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

 长篇小说
发布于 2017/05/11 08:16
字数 431
阅读 267
收藏 4

Jfinal3.0,3.1发布以后,新的模板引擎受到了广泛的欢迎,小伙伴们纷纷使用。

一些在3.0之前进行开发的系统,由于不支持该引擎,大家很纠结,所以写这样的一篇博文来和大家分享,

希望大家多多支持波总,支持JFINAL,支持模板引擎Template!

首先建立BaseController.java文件:

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文件(这里注意放到您的项目包中)

/**
 * 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.java

afterJFinalStart()

方法中添加如下代码:

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

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

文件已上传到jfinal群    

打完收工!

感谢波总指导使用!

© 著作权归作者所有

粉丝 2
博文 1
码字总数 431
作品 0
哈尔滨
私信 提问
加载中

评论(2)

JFinal
JFinal
分享出来都没通知我,做好事不留名啊,超级赞的,这个博文是介绍如何在jfinal 老版本中如何使用模板引擎,非常简单的办法

jfinal-3.1-template-engine.jar 这个 jar 包,就是使用现有的 jfinal-3.1.jar ,只保留住 com.jfinal.template 包下面的所有内容,再保留 com.jfinal.kit 下面的 JavaKeyword.class 就可以了
JFinal
JFinal
分享出来都没通知我,做好事不留名啊,超级赞的,这个博文是介绍如何在jfinal 老版本中如何使用模板引擎
JFinal Undertow 1.5 发布,稳定、可靠服役于生产环境

jfinal-undertow 用于开发、部署由 jfinal 开发的 web 项目。独创 HotSwapClassLoader + HotSwapWatcher 以 319 行代码极简实现热加载开发与部署。 经过几个版本的迭代,jfinal undertow 已稳...

JFinal
02/01
0
0
请问jfinal 2.2版本下如何进行单元测试?

@JFinal 你好,想跟你请教个问题: 请问jfinal 2.2版本下如何进行单元测试? 之前使用老版的时候,用了jfinal-ext,里面有ControllerTestCase,可以方便的进行ActiveRecord和Controller的测试...

Rajab
2016/08/18
257
2
基于JFinal实现的权限管理系统 JFinalUIB

项目用到了众多的开源组件,还有一些是网络分享的学习示例代码片段,感谢他们!!! JFinal高级学习交流QQ群:309647612 代码库地址:http://git.oschina.net/dongcb678/JfinalUIB.git 项目背景...

littleant
2014/06/03
0
35
JFinal Undertow 1.4 发布,小版本迭代

JFinal Undertow 项目在公司内部试用两个月,在俱乐部内测一个月,在 2018-12-12 号才放出 jfinal undertow 1.3 版本,这个版本已经十分完善好用 jfinal underow 1.4 针对自 1.3 发布以来的一...

JFinal
2018/12/25
0
0
JFinal Weixin 1.7发布,用 JFinal 开发,就这么定了

JFinal Weixin 1.7 增加了 Wap支付功能,改进jackson,支持用户信息中含有特殊字符时的json转换,并且修复了一个支付模块中的一个 bug,建议升级。 maven 升级坐标: 最新的 jar 包已经在 jf...

JFinal
2016/01/12
8K
35

没有更多内容

加载失败,请刷新页面

加载更多

阿里P8架构师谈:如何打造一份高并发编程知识体系

1.问题 1、什么是线程的交互方式? 2、如何区分线程的同步/异步,阻塞/非阻塞? 3、什么是线程安全,如何做到线程安全? 4、如何区分并发模型? 5、何谓响应式编程? 6、操作系统如何调度多线...

小刀爱编程
2分钟前
0
0
比特币:如何用地址查询交易?

在比特币应用开发中,一个常见的问题就是,在知道比特币地址的情况下,如何查询这个地址上发生的所有交易?或者类似的说法,如何查询一个指定的比特币地址发生的所有交易? 本文将给出这一问...

汇智网教程
4分钟前
0
0
Spring Boot 下,敏感词及特殊字符过滤处理方式

背景: 技术采用的是 Spring Boot ,请求方法主要为 POST, 请求使用较多的注解为 @RequestBody 交付测试人员进行测试,测试人员在对模糊搜索模块进行了各种特殊字符的搜索,以至于敏感词和特...

Ryan-瑞恩
9分钟前
0
0
使用 Jenkins X 渐进式交付

本文首发于:Jenkins 中文社区 这是渐进式交付系列的第二篇文章,第一篇请看:Kubernetes 中的渐进式交付:蓝绿部署和金丝雀部署。 我使用的我的 Croc Hunter 示例项目评估了 Jenkins X 中金...

Jenkins中文社区
16分钟前
1
0
零基础学算法->PI

本文章是介绍几种计算PI的方法 1.概率法计算PI(又称蒙特卡罗法) 1.1 定义,过程 在半径为1的圆1/4的区域,通过随机函数产生横纵坐标值x,y;当x*x+y*y<=1时,满足条件。 1.2 结果: 因为是随机...

tedzheng
19分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部