FreeMarker 正在参加 2020 年度 OSC 中国开源项目评选,请投票支持!
FreeMarker 在 2020 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
投票让它出道
已投票
授权协议 BSD
开发语言 Java
操作系统 跨平台
软件类型 开源软件
所属分类 程序开发模板引擎
开发厂商
地区 不详
提 交 者 不详
适用人群 未知
收录时间 2008-09-07

软件简介

FreeMarker是一个模板引擎,一个基于模板生成文本输出的通用工具,使用纯Java编写

FreeMarker被设计用来生成HTML Web页面,特别是基于MVC模式的应用程序

虽然FreeMarker具有一些编程的能力,但通常由Java程序准备要显示的数据,由FreeMarker生成页面,通过模板显示准备的数据(如下图)



FreeMarker不是一个Web应用框架,而适合作为Web应用框架一个组件

FreeMarker与容器无关,因为它并不知道HTTP或Servlet;FreeMarker同样可以应用于非Web应用程序环境

FreeMarker更适合作为Model2框架(如Struts)的视图组件,你也可以在模板中使用JSP标记库

FreeMarker是免费的

而且你还可以通过Eclipse的插件来编辑FreeMarker,经过验证,FreeMarker 最好的 Eclipse 编辑插件是 JBoss Tools

FreeMarker特性

1、通用目标

能够生成各种文本:HTML、XML、RTF、Java源代码等等

易于嵌入到你的产品中:轻量级;不需要Servlet环境

插件式模板载入器:可以从任何源载入模板,如本地文件、数据库等等

你可以按你所需生成文本:保存到本地文件;作为Email发送;从Web应用程序发送它返回给Web浏览器

2、强大的模板语言

所有常用的指令:include、if/elseif/else、循环结构

在模板中创建和改变变量

几乎在任何地方都可以使用复杂表达式来指定值

命名的宏,可以具有位置参数和嵌套内容

名字空间有助于建立和维护可重用的宏库,或者将一个大工程分成模块,而不必担心名字冲突

输出转换块:在嵌套模板片段生成输出时,转换HTML转义、压缩、语法高亮等等;你可以定义自己的转换

3、通用数据模型

FreeMarker不是直接反射到Java对象,Java对象通过插件式对象封装,以变量方式在模板中显示

你可以使用抽象(接口)方式表示对象(JavaBean、XML文档、SQL查询结果集等等),告诉模板开发者使用方法,使其不受技术细节的打扰

4、为Web准备

在模板语言中内建处理典型Web相关任务(如HTML转义)的结构

能够集成到Model2 Web应用框架中作为JSP的替代

支持JSP标记库

为MVC模式设计:分离可视化设计和应用程序逻辑;分离页面设计员和程序员

5、智能的国际化和本地化

字符集智能化(内部使用UNICODE)

数字格式本地化敏感

日期和时间格式本地化敏感

非US字符集可以用作标识(如变量名)

多种不同语言的相同模板

6、强大的XML处理能力

<#recurse> 和<#visit>指令(2.3版本)用于递归遍历XML树

在模板中清楚和直觉的访问XML对象模型

开源论坛 JForum 就是使用了 FreeMarker 做为页面模板。

Javadoc:http://www.ostools.net/apidocs/apidoc?api=freemarker

展开阅读全文

评论 (7)

加载中
打分: 力荐
性能不错,中文文档齐全
2018/07/12 09:13
回复
举报
ftl文件必须放在WEB-INF下?放resource下就不行,否则配置参数template_update_delay就不管用,好无奈,不知道是不是自己操作问题,templateLoaderPaths这个配置是假的么
2017/08/04 11:39
回复
举报
打分: 力荐
谢了
2017/03/08 11:52
回复
举报
blog FreeMarker
2012/06/27 13:20
回复
举报
FreeMarker 和 Velocity 能有一个对比参照的文章就更好了 FreeMarker
2013/01/10 09:22
回复
举报
Hello , Beetl FreeMarker 。Bye, Velocity
2014/09/17 09:52
回复
举报
2016/07/16 15:17
回复
举报
更多评论
发表于软件架构专区
2019/08/20 07:08

FreeMarker 2.3.29 发布,Java 模板引擎

FreeMarker 2.3.29 发布了。FreeMarker 是一个模板引擎,模板使用 FreeMarker 特定语言 FTL(FreeMarker Template Language)实现,同时使用 Java 准备需要显示的数据(数据库查询、进行业务计算),再由 FreeMarker 生成 HTML 页面。FreeMarker 已于 2018 年从 Apache 软件基金会毕业。 此版本在 FTL 与 Java 两侧都有一...

5
2
发表于服务端专区
2018/04/05 18:32

FreeMarker 2.3.28 发布,已成为 Apache 基金会顶级项目

FreeMarker 2.3.28 发布了,该版本包含众多的改进,包括 FTL 增加了不少新变量以及一些内建操作符;另外在 Java 侧也得到了很多改进,详细的内容请看 https://freemarker.apache.org/docs/versions_2_3_28.html 此外 2018年3月21日 FreeMarker 已经从 Apache 基金会孵化中毕业,目前已正式成为 Apache 基金会顶级项目。 ...

10
3
发表了资讯
2017/03/27 07:14

Apache FreeMarker 2.3.26-incubating,Java 模板引擎

Apache FreeMarker 2.3.26-incubating 发布了,这是一个稳定版,加上 "incubating" 是因为 Apache 软件基金会的要求(孵化中的项目),直到该项目成为完全接受(毕业的)Apache 项目为止。关于 FreeMaker 加入 Apache 孵化的新闻。 处于孵化状态的项目不一定是反映了项目代码的完整性或稳定性,不过它确实表明了项目尚未...

6
9
发表了资讯
2016/07/09 00:00

FreeMarker 加入 Apache 孵化,发布 2.3.25 版本

Freemarker 模板引擎宣布加入 Apache 基金会的孵化计划。加入后发布了首个更新版本 2.3.25 ,该版本改进内容包括: 扩展 list 指令用于支持哈希数据的处理,例如:<#list map as k, v>${k}: ${v}</#list> 增加 TemplateModelHashEx2 接口扩展自 TemplateModelHashEx 用于哈希数据支持 可通过 lazy_imports 和 lazy_auto_...

22
25
发表了资讯
2015/07/06 00:00

FreeMarker 2.3.23 发布,Java 模板引擎

按照计划,FreeMarker 2.3.23 版正式发布,在模版和 Java 处理上有很多改动,更新日志: FTL 方面的改进 Listing (#list) has received some specialized convenience features that target typical tasks people do again and again in templates. New list directive child directives. New built-ins that act on lo...

11
29
发表了资讯
2015/06/22 00:00

FreeMarker 2.3.23 RC1 发布,Java 模板引擎

FreeMarker 2.3.23 RC1 发布,最终版本计划 7 月 5 日发布! 值得关注的改进 (完整文档请看这里): Listing-related (#list) specialized convenience features that target some of the most typical tasks in templates: New #list directive child directives, #else and #items deal with the special cases with 0-...

28
38
发表了资讯
2015/06/09 00:00

FreeMarker 2.3.22 版本发布,Java 模板引擎

FreeMarker 2.3.22 版本发布,值得关注的特性: DefaultObjectWrapper 改进 (mostly on the field of Map and List wrapping), enabled by incompatible_improvements 2.3.22. 改进 FreemarkerServlet (mostly on the field of TLD discovery options and error message quality) 更多自定义模块加载机制 (lookup) Suppo...

1
5
发表了资讯
2013/06/29 00:00

FreeMarker 2.3.20 发布,Java 模板引擎

FreeMarker 2.3.20 改进了错误提示信息,更好的 boolean 格式化,更高的多核处理器下的性能以及其他很多的小改进和 bug 修复。 FreeMarker是一个模板引擎,一个基于模板生成文本输出的通用工具,使用纯Java编写 FreeMarker被设计用来生成HTML Web页面,特别是基于MVC模式的应用程序 虽然FreeMarker具有一些编程的能力,但...

17
23
发表了资讯
2012/03/06 00:00

FreeMarker 2.3.19 发布

FreeMarker 可是难道更新一次啊,这次更新版本是在 2月29日发布的。 该版本修复了两个重要的安全 bug,详情请看这里。另外新增对 JSON 字符串进行处理的方法 json_string.还有其他方面的小改动,请看官方发行说明。 FreeMarker是一个模板引擎,一个基于模板生成文本输出的通用工具,使用纯Java编写 FreeMarker被设计用来...

15
4
发表了资讯
2011/05/22 00:00

FreeMarker 2.3.18 发布

FreeMarker 突然变得勤快起来,前些天刚发布的 2.3.17 版本,因为存在一个跟 JSP 标签库相关的bug,该版本主要是修复了这个bug。 FreeMarker是一个模板引擎,一个基于模板生成文本输出的通用工具,使用纯Java编写 FreeMarker被设计用来生成HTML Web页面,特别是基于MVC模式的应用程序 虽然FreeMarker具有一些编程的能力,...

6
3
发表了资讯
2011/05/17 00:00

FreeMarker 2.3.17 发布,千年等一回

一度让人以为著名的 Java 模板引擎已经停止更新,上个版本 2.3.16 发布已经是一年以前了。还好,今天终于迎来了 Freemarker 的更新版本——2.3.17,尽管是小版本更新。 Freemarker 2.3.17 版本主要修复了安全的bug,也包含一些很小的新特性,例如: ?seq_index_of and ?seq_last_index_of 支持集合 日期类型数据支持 ?l...

14
7
发表了资讯
2010/07/04 00:00

FreeMarker 发布 Google AppEngine 的版本

来自 FreeMarker 在 Twitter 上的消息:FreeMarker 在上个月发布了一个新版本,该版本主要是提供了对 Google AppEngine 平台的支持。 下载 FreeMarker for GAE:freemarker-gae-pre3.jar FreeMarker 已经很久没更新了,这算是最近两个月内 FreeMarker 的一次更新吧。 目前 FreeMarker 的最新版本是: FreeMarker 2.3.16 ...

2
2
发表了资讯
2009/12/10 00:00

模板引擎 FreeMarker 2.3.16 发布

前段时间,我用FreeMarker开始一个新项目的开发,等开发结束后我开始有点后悔了。因为对FreeMarker不足的迫不及待,以及FreeMarker的迟迟不更新的问题。 今天终于看到有新的FreeMarker退出来了,能否解决我所遇见的问题呢? 该版本主要的改进内容包括: 1. 修正了将序列转为Java数组的不正确处理方式; 2. 修正了对浮点数...

2
2
发表了资讯
2008/12/17 00:00

FreeMarker 2.3.15 版本发布

FreeMarker是一个模板引擎,一个基于模板生成文本输出的通用工具,使用纯Java编写。 新版本修正了许多bug同时也引入了一些新的特性: Changes on the FTL side In web pages that are based on the FreemarkerServlet, you can now use <@include_page path="..."/> to use servlet includes. See more here... Changes ...

1
0
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表于大前端专区
2019/02/26 10:15

FreeMarker:What is Apache FreeMarker™?

直接阅读中文版:http://freemarker.foofun.cn/ Apache FreeMarker™ is a template engine: a Java library to generate text output (HTML web pages, e-mails, configuration files, source code, etc.) based......

0
0
发表了博客
2018/08/28 20:35

Template-FreeMarker:什么是 FreeMarker?

ylbtech-Template-FreeMarker:什么是 FreeMarker? 1.返回顶部 1、 FreeMarker 是一款 模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页,电子邮件,配置文件,源代码等)的通用工具。 它不是面向最终用户的,而是一个Java类库,是一款程序员可以嵌入他们所开发产品的组件。 模板编写为FreeMarke...

0
0
发表了博客
2015/06/29 13:55

FreeMarker

一、类型 1、标量: 标量存储单一的值 (1)字符串:在模板中,字符串必须放在引号内,数字是不用放在引号内的 字符串内可以用“\”可以进行转义,FreeMarker支持的转义字符见末尾 为了表示原生字符串,可以在开始的引号或单引号之前放置字母r: 正确使用插值 从一个字符串中获取其中某个字符 (2)数字: (3)布尔值:...

0
0
发表于大前端专区
2014/09/17 10:28

Freemarker

符号无法正常显示

0
0
发表了博客
2019/03/01 11:15

FreeMarker

FreeMarker 是一个用 Java 语言编写的模板引擎,它基于模板来生成文本输出。FreeMarker与 Web 容器无关,即在 Web 运行时,它并不知道 Servlet 或 HTTP。它不仅可以用作表现层的实现技术,而且还可以用于生成 XML,JSP 或 Java 等。 为什么要使用网页静态化技术? 网页静态化解决方案在实际开发中运用比较多,例如新闻网...

0
0
发表了博客
2019/09/10 20:57

freemarker

在freemarker中,如果需要用到date类型,需要和数据库中形成映射,所以需要用到的库时java.sql.date。不能是其他的库 对于那种null或者不存在的值,需要在后面加上!,后面如果还有内容,表示这种情况成立的话,输出该语句,而不会导致出现异常信息。 定义变量使用assign来定义变量: <#assign a=100/> 定义了一个名为a的...

0
0
发表了博客
2019/07/23 16:14

【FreeMarker】FreeMarker快速入门(一)

什么是 FreeMarker   FreeMarker 是一款 模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页,电子邮件,配置文件,源代码等)的通用工具。 它不是面向最终用户的,而是一个Java类库,是一款程序员可以嵌入他们所开发产品的组件。   模板编写为FreeMarker Template Language (FTL)。它是简单的,...

0
0
发表了博客
2014/03/13 17:31

Freemarker

https://github.com/Liangdi/wx-platform-docs/blob/master/FreeMarker-Manual-Simplified-Chinese%202.3.18.pdf

0
3
2018/04/17 19:27

FreeMarker(二):利用FreeMarker转pdf

1. 设计需求 订票成功后,生成一个pdf 文件,用户打印入场票,门票大致如下所示: 2. 设计思想 1). 使用FreeMarker 转换 ftl(就是FreeMarker 魔板文件),生成HTML 2). 使用jtidy库将 HTML转换成 对格式要求严格...

0
10
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表了问答
2009/05/07 11:43

Java模版引擎:Velocity 和 FreeMarker 孰优孰劣

对 Java 程序员来说,最优秀的模版引擎无外乎 Velocity 和 FreeMarker 了。但是对一个尚未接触过这两个项目的人来说,就不知道该选择哪个,哪个才是最适合自己的。下面的内容来自 FreeMarker 网站上一个比较中肯的比较,尽管更多的是倾向于 FreeMarker : 相比较 FreeMarker 而言,Velocity 更加简单、轻量级,但它的功能...

18
28
发表于AI & 大数据专区
01/08 11:24

求教大佬 html转word

求教!!!怎么html转word??? 大佬们有什么好办法把这些试题导出成word?主要是需要保持样式的正确,我之前用itext导出,但是会出现样式混乱,后面直接把试题弄成一个PDF 但是用户就只想要word。后面发现docx4j好像可以,但是我导出后发现还是会有大批样式不正确的情况。求大佬们支招

8
2
06/26 00:09

怎么在ftl文件中引入外部的html文件?

页面使用ftl的,怎么在ftl中引入外部的html文件? 比如文章详情页面,这个页面中文章内容是已经生成的html文件,放在了文件服务器上。但是文章名称、阅读量、点赞量需要实时从后台获取到。页面使用 freemarker的。还有一个就是,在详情页的右侧有推荐文章等相关的这些都是已经生成的html文件。在ftl文件中怎么引入这些外...

2
0
发表于服务端专区
04/24 18:23

freemarker 项目转beetl map 遍历问题

@闲大赋 你好,想跟你请教个问题: 您好,之前的项目freemarker 的,现在想改成beetl , 这是之前的代码: <select name="sex" id="sex_" disabled="disabled"> <#list sexEnumMap?keys as k> <#if k == "${sysAccount.sex}"> <option value="${k}" selected="selected">--${sexEnumMap[k]}--</option> </#if> <#if k != ...

2
0
发表于软件架构专区
04/07 12:14

word生成的freemarker模板,用word打不开提示错误?

就是word生成的xml,里面替换了好多freemarker的语法变量。但是想要修改word的页眉,发现那个模板改成xml后,word打不开了。 之前尝试过在xml里改页眉,发现xml太多,自己不怎么懂老是报错不行。如果word重新生成一份xml,替换里面的变量,由于word太大,这样替换起来效率不高,在xml改还是容易出错。 有没有大神遇到过这...

1
0
发表于AI & 大数据专区
03/24 18:56

freemarker单引号自动转换成双引号的问题

freemarker内容是一段html嵌入的js代码,类似 <a href='javascript:window.open("","_self").close();'>关闭</a> 但是freemarker渲染的html页面会把前后的单引号自动转成双引号,导致js代码无法执行,如果把("","_self")里的双引号换成单引号,又出现第一个单引号也会被转换成双引号,js依然不能执行。不知道如何处理这种...

1
0
发表了问答
2016/03/04 16:20

freemarker 取出的数据部分不能显示!?

第一次遇到这种情况,很无解啊,前面的数据都是正常的,但是到了最后一个就偏偏显示不出来了,求大神们帮助. 模板配置: [@report_ipStat_stat projectName="${projectName!'GNUM'}" date="${date!'2016-03-01'}" pageSize="${pageSize!10}" pageNum="${pageNum!1}" ;ipStats] { "recordsFiltered":${pag...

3
0
发表于服务端专区
02/23 12:15

springboot2+freemarker中怎么使用request对象?

freemarker: expose-request-attributes: true expose-session-attributes: true request-context-attribute: request request:${request} 打印出org.springframework.web.servlet.support.RequestContext@9d44d45 但是按request的方法去取值根本取不到或报错,如request.getRequestURL() 现在只能在C...

5
1
01/17 11:48

xss不生效的原因

最近在看xss就自己写了一个最简单的js试着尝试一下,js被保存到数据库以后重新访问确没有被执行。一开始觉得是freemarker的原因,在服务器解析完整的html内容后在返回给浏览器。可是浏览器显示了js确没有执行。

2
0
发表于大前端专区
2019/06/28 10:08

什么项目什么时候比较适合用VUE和react。感觉现在都是为了用而用?我怎么感觉企业内部应用,后台管理的,没必要用VUE啊。

【如题】 什么项目什么时候比较适合用VUE和react。现在怎么全都是为了用而用,只要是前端就用VUE了吗????我怎么感觉企业内部应用,后台管理的,没必要用VUE啊。 主要本人之前主要负责后端,做项目为主,互联网的项目比较少。 从hibernate,Struts1开始撸,那时候还很多用JSP的,后来撸Freemarker,再后来撸velocity,...

10
3
发表了问答
2017/06/27 23:39

使用gradle+freemarker生成代码报错The following has evaluated to null or missing

* What went wrong: Execution failed for task ':generate'. > freemarker.core.InvalidReferenceException: The following has evaluated to null or missing: ==> primaryKeys[0] [in template "src/src/main/java/${root.javaPackagePath}/${moduleName}/mgt/controller/${entityName}Controller.java.ftl" a t line...

3
0
发表于服务端专区
2019/10/31 09:50

springboot+freemarker项目,ajax请求每次sessionid不一样

springboot版本:2.x 如题,应用登录界面有验证码校验,通过jQuery发送到后台,有时候正常有时候不正常,偶发性问题,出现问题的时候请求头跟正常的时候不太一致,出现问题的时候Request Headers中Cookie会出现两个jsessionid,两个还不一样,Response Headers中会出现Set-Cookie。 项目没有跨域,通过域名访问才会偶发性...

2
0
发表了问答
2015/02/01 22:07

jFinal Boolean 转换问题

@JFinal 你好,想跟你请教个问题:select true a from xxx; 拿到的a是个1,不是true

4
0
发表了问答
2017/04/01 17:15

VUE.js 掺杂 各种模版引擎 时候的使用场景

本人不是干前端的 , 最近看了下 Vue.js 的 . 有一些疑问 . 因为之前都是使用 jsp的el表达式取值.或者使用freemarker模版取值,又或者使用jfinal的TemplateEng取值 一般都是这样 ******************************************************************************* url地址请求---controler接收----congtroller处理请求ren...

7
0
发表于大前端专区
2019/08/21 15:39

关于springboot 加载不到静态资源js 问题之一

springboot +freemarker 整合得时候 js 静态资源加载不到问题

3
1
发表了问答
2014/05/27 09:06

freemarker做CMS的模版引擎,请各位给个思路

如果单纯用freemarker做一个后台,我没问题。 但是我现在打算把freemarker作为前台的模版引擎使用。 当作为后台引擎时,加载模版之前,各个变量会在初始化freemarker的时候就已经已知。然后"压到"freemarker里显示就可以了。 但是作为前台引擎时,我希望达到的效果是,变量什么的要在模版里写,这样的话,相当于用户可以自...

4
0
发表于服务端专区
2018/05/09 17:54

FreeMarker 页面怎么对session的值进行判断

ftl页面对session的值进行判断,比较 <#list Session["menus"] as m> <li><a href="${m.menus[0].resourcePath}" <#if Session["menuTopId"] == m.menuId > class="active_a0" </#if> ><span>${m.menuName}</span></a></li> </#list> 不管怎么写都搞不定,只能判断session的值是否为空 确定Session["menuTopId"]有值,怎...

3
0
2019/02/20 15:37

freemarker word 导出

类似这种word 我怎么样能够保证格式不变化?感觉要每一行去算距离然后在算文字距离,最后在导出数据.有点难受啊。大佬们有没有什么好点的解决方案?

5
1
2019/01/16 10:04

springboot前后端分离

默默的问一句,现在的工程都已经实现前后端分离了,那么springboot工程中也就不需要在集成模板引擎了,页面相关的都给前端做了,后端只负责提供接口就行了。不知道的我的理解对不?

5
1
发表于服务端专区
2018/12/11 20:24

为什么 在idea中我的ftl文件中 代码不高亮

在哪设置 ,才能让ftl中代码高亮显示,识别freemarker的指令

1
0
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
7 评论
725 收藏
分享
返回顶部
顶部