freemarker 模板引擎

简介: 模板引擎:根据模板与绑定的数据,生成最终的xml文本。 java领域的表现层的三大模板引擎——jsp,velocity,freemarker。jsp,java server page。 官网:http://freemarker.org/ 1.依赖 <dependency> <groupId>org.freemarker</groupId> &

模板引擎:根据模板与绑定的数据,生成最终的xml文本。

java领域的表现层的三大模板引擎——jsp,velocity,freemarker。jsp,java server page。

官网:http://freemarker.org/

1.依赖

<dependency>
	<groupId>org.freemarker</groupId>
	<artifactId>freemarker</artifactId>
	<version>2.3.23</version>
</dependency>


2.模板组成部分

文本:直接输出的部分

注释:<#-- content -->

数据模型:${data.field}

3.相关类

freemarker.template.Configuration
配置类。
freemarker.template.Configuration.Configuration(Version incompatibleImprovements)
构造函数。
void freemarker.template.Configuration.setDirectoryForTemplateLoading(File dir)
设置存放模板文件(若干个 xx.ftl)的目录。
void freemarker.template.Configuration.setDefaultEncoding(String encoding)
设置编码格式。
Template freemarker.template.Configuration.getTemplate(String name)
根据文件名拿到template。
void freemarker.template.Template.process(Object dataModel, Writer out)
有了模板与数据,得到输出,写入out中。若想得到字符串,一般会传入StringWriter。

4.常用指令

list

for循环遍历的效果。
<#list fruits as fruit><br>
   <li>${fruit.name}<br>
</#list>

if

条件判断。为真时,标签对内的内容才会输出。
<#--标签内的属性,不能用${}的形式-->
<#if isBig && isExpensive>Wow!</#if>
<#-- 使用关系比较符时,可以直接用大于号,但要放在括号内,保证标签闭合符号能被正确处理-->
<#if (x>y)>x is larger than y</#if>
<#-- 使用关系比较符时,也可以用-->
<#if (x  gt y)>x is larger than y</#if>

??

判断某个变量是否存在

var?length

取得字符串长度

var?c

将数字转为字符串

assign

引入局部变量并赋值

5.例子

6.常见错误

当用到了${object.x},但datamodel中没有这个属性,就会报下面这样的错误。
Error executing FreeMarker template
FreeMarker template error:
The following has evaluated to null or missing:
解决办法:使用<#if obj.x??>做判断。

目录
相关文章
|
测试技术 程序员 C++
iOS:项目中无用类检测和无用图片检测汇总
在涉及到项目大改版,或者涉及到某个功能模块大变更,就会涉及到图片废弃和文件废弃的情况。 但是这时候就会遗留下一个很大的问题,没有将废弃的、无用的文件类或资源删除干净。而这次需要对工程代码的无用资源和无用文件进行删除处理,感触颇多,故在此笔记。 首先,感觉很多人的代码习惯还是恶待提高。比如我发现一些人的代码操作习惯,从好到次,可以大略分以下情况
1507 0
iOS:项目中无用类检测和无用图片检测汇总
|
存储 JSON 网络协议
阿里巴巴FastJSON使用实例
阿里巴巴FastJSON使用实例
1186 0
|
Java Linux Android开发
给TV添加一个投屏热键:基于MTK9269 android 9.0
本文介绍了在基于MTK9269 Android 9.0系统的电视上添加投屏热键的方法,包括配置红外遥控器按键映射、在PhoneWindowManager.java中添加按键响应代码,以及创建一个接收Intent的Android应用程序来处理热键触发的动作。
439 1
给TV添加一个投屏热键:基于MTK9269 android 9.0
|
IDE 测试技术 开发工具
自动化测试实操案例详解 | Windows应用篇
自动化测试实操案例详解 | Windows应用篇
723 0
|
开发框架 数据安全/隐私保护 Android开发
iOS二维码的生成和扫码详细介绍(手把手教)
iOS二维码的生成和扫码详细介绍(手把手教)
892 0
|
安全 Java 关系型数据库
Spring是如何保证同一事务获取同一个Connection的?使用Spring的事务同步机制解决:数据库刚插入的记录却查询不到的问题【享学Spring】(上)
Spring是如何保证同一事务获取同一个Connection的?使用Spring的事务同步机制解决:数据库刚插入的记录却查询不到的问题【享学Spring】(上)
|
弹性计算
阿里云服务器采用AMD CPU处理器ECS实例规格大全
阿里云有AMD服务器吗?有的,阿里云百科分享阿里云服务器ECS实例采用AMD处理器的规格大全
660 0
阿里云服务器采用AMD CPU处理器ECS实例规格大全
|
自然语言处理 Shell 开发者
【DSW Gallery】基于EasyNLP的中文新闻标题生成
EasyNLP提供多种模型的训练及预测功能,旨在帮助自然语言开发者方便快捷地构建模型并应用于生产。本文以中文新闻标题生成为例,为您介绍如何在PAI-DSW中使用EasyNLP。
【DSW Gallery】基于EasyNLP的中文新闻标题生成
|
Java 开发工具 C++
notepad++ 介绍|学习笔记
快速学习 notepad++ 介绍
notepad++ 介绍|学习笔记
|
Java 数据库连接 数据库
SpringBoot配置文件的分水岭——高级配置的使用
SpringBoot配置文件的分水岭——高级配置的使用
SpringBoot配置文件的分水岭——高级配置的使用