FreeMarker 入门

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
原文地址:https://www.cnblogs.com/loveer/p/11298205.html