FreeMarker 入门
欢迎光临我的博客[http://poetize.cn],前端使用Vue2,聊天室使用Vue3,后台使用Spring Boot
FreeMarker是一款模板引擎: 即一种基于模板和要改变的数据,并用来生成输出文本(HTML网页、电子邮件、配置文件、源代码等)的通用工具。 它不是面向最终用户的,而是一个Java类库,是一款程序员可以嵌入他们所开发产品的组件。
一.基本语法编辑
${}:FreeMarker将会输出真实的值来替换大括号内的表达式,
这样的表达式被称为interpolation(插值)。
注释:注释和HTML的注释也很相似,但是它们使用<#-- -->
来标识。不像HTML注释那样,FTL注释不会出现在输出中(不出现在访问者的页 面中),因为FreeMarker会跳过它们。
二.FTL标签(FreeMarker模板的语言标签)
FTL标签和HTML标签有一些相似之处,但是它们是FreeMarker的指令,
是不会在输出中打印的。这些标签的名字以#开头。
if、elseif和else指令可以用来条件判断是否越过模板的一个部分。
condition必须计算成布尔值,否则错误将会中止模板处理。elseif和else必须出现在if内部
(也就是在if的开始标签和结束标签之间)
<#if condition>
...
<#elseif condition2>
...
<#elseif condition3>
...
<#else>
...
</#if>
list指令执行在list开始标签和list结束标签
<#list users as user>
${user}取对象
${user_index}取对象的下标
${user_index+1}
</#list>
访问pojo中的属性
${key.property}
引入外部资源
<#include "head.ftl">
四.内建函数
list的尺寸
${users?size}
定义变量
<#assign text="{'name':'小明','age':'12'}">
变量转换成对象
<#assign person=text?eval>
日期格式化
${date?string('yyyy年MM月dd日')}
空值处理
${(name)!'小明')}空值会用括号的值代替
<#if (a)??>逻辑运算,如果a不为空,处理if里的语句
逻辑运算符(如果使用符号需要用小括号()括起来)
>gt
>=gte
<it
<=ite
FreeMarker不能引用不存在的变量,除非明确地告诉它当变量不存在时如何处理,
一个不存在的变量和一个是null值的变量,对于FreeMarker来说是一样的。
三.Freemarker + Springboot Maven配置
依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>
Freemarker 页面目录配置
spring:
mvc:
view:
prefix: /templates/
suffix: .ftl
##模版存放路径(默认为 classpath:/templates/)
spring.freemarker.template-loader-path=classpath:/templates/
##是否生成缓存,生成环境建议开启(默认为true)
spring.freemarker.cache=true
##编码
spring.freemarker.charset=UTF-8
spring.freemarker.check-template-location=true
##content-type类型 (默认为test/html)
spring.freemarker.content-type=text/html
## 设定所有request的属性在merge到模板的时候,是否要都添加到model中 (默认为false)
spring.freemarker.expose-request-attributes=false
##设定所有HttpSession的属性在merge到模板的时候,是否要都添加到model中 (默认为false)
spring.freemarker.expose-session-attributes=false
##RequestContext属性的名称
spring.freemarker.request-context-attribute=request
##模板后缀 (默认为.ftl)
spring.freemarker.suffix=.html