- springmvc freemarker 动态加载(不用重启tomcat立即生效)
- FreeMarker 判断List不为空
- Cannot expose request attribute 'website' because of an existing model object of the same name 的解决方案
- Java模板引擎 FreeMarker介绍
- FreeMarker入门教程
- FreeMarker基本标签的使用
- FreeMarker基本数据类型
- FreeMarker集合(List、Map)
- FreeMarker自定义指令
- FreeMarker四种变量的用法
- FreeMarker模板包含及名称空间
- freemarker 空值处理
知识点
相关文章
更多最近更新
更多Java模板引擎 FreeMarker介绍
2019-03-02 23:28|来源: 领悟书生
FreeMarker是一个模板引擎,一个基于模板生成文本输出的通用工具,使用纯Java编写,FreeMarker被设计用来生成HTML Web页面(为了提高页面的访问速度,把页面静态化),特别是基于MVC模式的应用程序
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 做为页面模板。
相关问答
更多-
java freemarker用模板生成静态html页面[2022-03-26]
freemarker是data+model=输出。需要替换你模型的所有代号的,替换一次就行了,你的asp的eval实际上也是替换 -
FreeMarker模板引擎读取list 错误[2022-03-30]
scala中的List不是java的List,他们并没有任何的继承关系,你需要把Scala的List转换成Java的List import scala.collection.convert.wrapAsJava.bufferAsJavaList val s:java.util.List[Int] = bufferAsJavaList(List(1,2,3).toBuffer) 但是根据你的提示可以知道,其实FreeMarker只是需要一个Collection就可以了,那么你还可以这样做 import sca ... -
java 试用freeMarker模板输出报错[2022-03-12]
错误信息很明显了,他需要一个hashmap,你给了一个arraylist。 new一个hashmap, 然后 put("students",stulist) -
Java 使用 freemarker 模板引擎的相关疑问 ,求大神走过路过不要错过[2022-06-11]
FreeMarker 是一个用Java编写的模板引擎,主要用来生成HTML Web页面,特别是基于MVC模式的应用程序。虽然FreeMarker具有一些编程的能力,但不像PHP,通常由Java程序准备要显示的数据,由 FreeMarker模板生成页面。 FreeMarker可以作为Web应用框架一个组件,但它与容器无关,在非Web应用程序环境也能工作的很好。 FreeMarker适合作为MVC的视图组件,还能在模板中使用JSP标记库。 所以你其实是用freemarker的ftl 做前端页面来生成对应的htm ... -
java freemarker 模板文件的疑问[2022-02-14]
freemarker 的模板文件也并不一定是要以 .ftl 为后缀的。 你把 FTL 标签写在 html 中,让html 作为 freemarker 的模板也是可以滴 -
这个看你网站功能和性能需求了。网上有很多关于这些技术区别的,你可以去看一看。 引用篇文章给你: 浅谈jsp、freemarker、velocity区别 http://blog.csdn.net/tjcyjd/article/details/16803877 作者:浮云中的毛驴 以前做web开发页面层用的基本就是就是,最近公司java项目页面层用的技术是velocity。听说jsp要淘汰,也不知道是真是假,但本人还是比较喜欢jsp的,下面是网上查找的javaweb项目页面3种技术的区别。 在j ...
-
java freemarker 通过ftl模板导出word文档[2022-04-28]
循环列表需要加<#list datas as bean>#list>标签的; -
在扩展DefaultObjectWrapper类之后,问题得以解决。 我不得不将它升级到更高版本的Freemarker.jar。 After extending the DefaultObjectWrapper class the problem was solved. I had to upgrade it to a higher version of Freemarker.jar.
-
Freemarker和RTF(Freemarker and RTF)[2023-06-28]
如果在富编辑器(如Word或写字板)中输入${name} ,由于{和}是RTF中的保留字符,它将在保存的文件中变为$\{name\} 。 (用记事本打开它看看。)要解决这个问题,你必须使用一个自定义的TemplateLoader实现(通过Configuration.setTemplateLoader ),它包装另一个TemplateLoader以将Reader包装到一个过滤器中。 此过滤器应该查找$\{ ,并且从那里它应该取消RTF直到关闭\} 。 当然,带有$[NAME]$的旧模板做了类似的Templat ... -
具有动态条件的Freemarker模板引擎<#if condition>(Freemarker template engine <#if condition> with dynamic condition)[2022-03-06]
它不起作用,因为大于号的符号被视为#if标记的结尾。 所以实际上你有<#if category.getId()> ,而id不是布尔值。 尝试<#if (category.getId() > 1)> 。 (顺便说一句,只需编写category.id 。无需在FreeMarker中get...() 。) It doesn't work because the greater-than sign is seen as the end of the #if tag. So in effect you have <# ...