简单的freemarker解析测试
本文是一个很简单很基础的Freemarker模板解析测试类,复杂的也是在此基础上添加一些代码优化而来,懂得基础流程后就能融会贯通了
POM:
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.9</version>
</dependency>
JAVA:
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.Reader;
import java.io.Writer;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map; import freemarker.template.Template;
import freemarker.template.TemplateException; /**
* Freemarker测试类
*
* @author yzl
* @see [相关类/方法](可选)
* @since [产品/模块版本] (可选)
*/
public class FreemarkerTest {
public static void main(String[] args) throws IOException, TemplateException {
Reader reader = new FileReader(new File("E:/test.ftl"));
Template template = new Template("test", reader, null, "utf-8"); Map<Object, Object> data = new HashMap<Object, Object>();
data.put("userName", "hello world");
data.put("list", Arrays.asList("entity1","entity2"));
Writer writer = new PrintWriter(System.out); template.process(data, writer); writer.flush();
writer.close();
reader.close();
}
}
Ftl文件:
<p>姓名:${userName}</p>
<p>List:
<#list list as entity>
${entity}</br>
</#list>
</p>
输出结果:
<p>姓名:hello world</p>
<p>List:
entity1</br>
entity2</br>
</p>
解析Freemark字符串和ftl文件到字符串:
package com.longge.util; import java.io.File;
import java.io.FileReader;
import java.io.Reader;
import java.io.StringWriter;
import java.util.Map; import freemarker.template.Template;
import lombok.NonNull; /**
* @author roger yang
* @date 7/04/2019
*/
public class TemplateUtils {
/**
* parsing string
* @param toParseStr
* @param data
* @return
* @throws Exception
*/
public static String parsingString(@NonNull String toParseStr, @NonNull Map<String, Object> data) throws Exception {
try(StringWriter sw = new StringWriter();) {
Template template = new Template(toParseStr, toParseStr, null); template.process(data, sw);
sw.flush();
return sw.toString();
}
} /**
* parsing with ftl file
* @param file
* @param data
* @return
* @throws Exception
*/
public static String parsingFtlFile(@NonNull File file, @NonNull Map<String, Object> data) throws Exception {
try(Reader reader = new FileReader(file);
StringWriter sw = new StringWriter();) {
Template template = new Template(file.getName(), reader, null);
template.process(data, sw);
sw.flush();
return sw.toString();
}
} /**
* parsing with ftl file
* @param file
* @param data
* @return
* @throws Exception
*/
public static String parsingFtlFile(@NonNull String filePath, @NonNull Map<String, Object> data) throws Exception {
File file = new File(filePath);
return parsingFtlFile(file, data);
}
}
简单的freemarker解析测试的更多相关文章
- 非常简单的XML解析(SAX解析、pull解析)
这里只是把解析的数据当日志打出来了 非常简单的xml解析方式 package com.example.demo.service; import java.io.IOException; import ...
- 自己动手实现一个简单的JSON解析器
1. 背景 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.相对于另一种数据交换格式 XML,JSON 有着诸多优点.比如易读性更好,占用空间更少等.在 ...
- 一个简单的json解析器
实现一个简单地json解析器. 两部分组成,词法分析.语法分析 词法分析 package com.mahuan.json; import java.util.LinkedList; import ja ...
- 基于 Roslyn 实现一个简单的条件解析引擎
基于 Roslyn 实现一个简单的条件解析引擎 Intro 最近在做一个勋章的服务,我们想定义一些勋章的获取条件,满足条件之后就给用户颁发一个勋章,定义条件的时候会定义需要哪些参数,参数的类型,获取勋 ...
- 用c#自己实现一个简单的JSON解析器
一.JSON格式介绍 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.相对于另一种数据交换格式 XML,JSON 有着很多优点.例如易读性更好,占用空间更 ...
- 简单sql字段解析器实现参考
用例:有一段sql语句,我们需要从中截取出所有字段部分,以便进行后续的类型推断,请给出此解析方法. 想来很简单吧,因为 sql 中的字段列表,使用方式有限,比如 a as b, a, a b... 1 ...
- 简单的URL解析
简单的URL解析,直接举例说明了 function getUrl(){ //如果存在则取到来后面的参数,注意,?不需要取出,substring从1开始,否则取""; var qs ...
- FFmpeg的HEVC解码器源码简单分析:解析器(Parser)部分
===================================================== HEVC源码分析文章列表: [解码 -libavcodec HEVC 解码器] FFmpeg ...
- FFmpeg的HEVC解码器源代码简单分析:解析器(Parser)部分
===================================================== HEVC源代码分析文章列表: [解码 -libavcodec HEVC 解码器] FFmpe ...
随机推荐
- my sql
如果改了上面的4个配置文件,要让其立即生效,可以使用如下方法 source .bash_profile . .bash_profile 基于Apache+php+mysql的许愿墙网站的搭建 方案一: ...
- (二分)Block Towers(cf626)
http://www.codeforces.com/contest/626/problem/C 题意是有一群小朋友在堆房子,现在有n个小孩每次可以放两个积木,m个小孩,每次可以放3个积木,最后每个小孩 ...
- Android--Notification
1.通知(Notification)是应用程序没有运行在前台时可以向用户发出一些提示消息的功能,发出通知后,手机状态栏会显示通知,用户可以通过下拉状态栏来查看和操作通知: 2.Notification ...
- Troubleshoot Refused VNC Connection in CentOS 7
Troubleshoot Refused VNC Connection in CentOS 7 Posted on March 15, 2015 by Istvan Szarka — 2 Commen ...
- extjs中form.reset(true)出现的bug修复
在之前的开发extjs中,用ext.form.panel开发了一个表单,当使用了reset(true)之后,再次使用getRecord()却还是可以得到值,该值为上一次的旧值,查看了api文档,再结合 ...
- 【原创】 SharePoint Service Unavaliable
HTTP Error 503. The service is unavailable. 一般都是application pool停止工作了,停止原因可能是Identiy里的账号过期了什么的.
- 用c#开发微信 (21) 微信酒店预订系统
本系统主要是帮助酒店让客户可以通过微信预订房间,增加酒店的入住率. 1 微信里订酒店 1.1关注微信号 用微信扫描下面的二维码(微信号 webuscn),关注此微信号 1.2订房 点击微信号里的 微布 ...
- 100道.net面试题
简述 private. protected. public. internal 修饰符的访问权限. 答 . private : 私有成员, 在类的内部才可以访问. protected : 保护成员,该 ...
- 基于 IdentityServer3 实现 OAuth 2.0 授权服务数据持久化
最近花了一点时间,阅读了IdentityServer的源码,大致了解项目整体的抽象思维.面向对象的重要性; 生产环境如果要使用 IdentityServer3 ,主要涉及授权服务,资源服务的部署负载的 ...
- 设计模式之美:Adapter(适配器)
索引 别名 意图 结构 参与者 适用性 效果 相关模式 实现 实现方式(一):简单直接的对象适配器. 实现方式(二):实现双向类适配器. 别名 包装器(Wrapper) 意图 将一个类的接口转换成客户 ...