1、创建springboot项目,导入web开发包
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>
2、application.properties添加freemarker配置项
spring.freemarker.enabled=true
spring.freemarker.cache=false
spring.freemarker.charset=UTF-8
spring.freemarker.content-type=text/html
spring.freemarker.suffix=.ftl
spring.freemarker.check-template-location=true
spring.freemarker.template-loader-path=classpath:/templates
spring.freemarker.expose-request-attributes=true
spring.freemarker.expose-session-attributes=true
spring.freemarker.expose-spring-macro-helpers=true
spring.freemarker.request-context-attribute=request
spring.freemarker.settings.default_encoding=UTF-8
spring.freemarker.settings.output_encoding=UTF-8
spring.freemarker.settings.url_escaping_charset=UTF-8
spring.freemarker.settings.tag_syntax=auto_detect
spring.freemarker.settings.locale=zh_CN
spring.freemarker.settings.datetime_format=yyyy-MM-dd HH:mm:ss
spring.freemarker.settings.date_format=yyyy-MM-dd
spring.freemarker.settings.time_format=HH:mm:ss
freemarker常用语法
0、null值的处理
!: #指定缺失变量的默认值
??: #判断某个变量是否存在
${val!} #为null输出空白
${val!"默认值"} #指定默认值
1、字符串输出
${user.name?if_exists} // 变量存在,输出该变量,否则不输出
${user.name!} // 变量存在,输出该变量,否则不输出
${user.name?default("xxx")} // 变量不存在,取默认值xxx
${user.name!"xxx"} // 变量不存在,取默认值xxx
${"123<br>456"?html} // 对字符串进行HTML编码,对html中特殊字符进行转义
${"str"?cap_first} // 使字符串第一个字母大写
${"Str"?lower_case} // 将字符串转换成小写
${"Str"?upper_case} // 将字符串转换成大写
${"str"?trim} // 去掉字符串前后的空白字符
$ {“你好$ {user.name!}”} //输出你好+变量名
$ {“hello”+ user.name!} //使用+号来连接,输出你好+变量名
<#assign str =“abcd123”/>
$ {str?substring(0,4)} //输出abcd
$ { str [ 0 ] } $ {str [4]} //结果是a2
$ {str [1..4]} //结果是bcd1
$ {str?index_of("n")} //返回指定字符的索引
2、if判断
<#if count > 0>
...
<#elseif ==0>
...
<#else>
...
</#if>
3、集合遍历
1)list
<#list arrays as item>
${item_index} # 取索引下标
${item.id} # 取值
</#list>
2)map
<#if map??>
<#list map?keys as key>
key:${key!}
value:${map[key]!}
<#-- 如果value是个对象 ${map[key].id!}-->
</#list>
</#if>
4、时间输出
${date?date} #解析日期
${date?time} #解析时间
${date?datetime} #解析日期+时间
${date?string('yyyy/MM/dd HH:mm:ss')} #自定义格式
5、数字输出
假设account.money 10
$ {account.money?string.number} //输出10
$ {account.money?string.currency} //¥10.00
$ {account.money?string.percent} //10%
$ {1.234?int} //将小数转为int,输出1
<#setting number_format ="percent"/> //设置数字默认输出方式('percent',百分比)
<#assign content=123 /> //声明变量回答123
#{content} //输出123
${content?string} //输出1,230%
${content?string.number} //输出12
${content?string.currency} //输出¥123.0
${content?string.percent} //输出1,230%
数字格式化插值可采用#{expr; format}形式来格式化数字,其中格式可以是:
mX:小数部分最小X位
MX:小数部分最大X位
如下面的例子:
<#assign x = 2.582 /> <#assign y = 4 />
#{x; M2} //输出2.58
#{y; M2} //输出4
#{x; m2} //输出2.58
#{Y; m2} //输出4.0
#{x; m1M2} //输出2.58
#{x; m1M2} //输出4.0
int 对余数取整
<#assign x=5>
${ (x/2)?int } # 2
${ 1.1?int } # 1
6、申明变量
<#assign foo = false /> //声明变量,插入布尔值进行显示,注意不要用引号
$ {foo?string("yes","no")} //当为真时输出"yes",否则输出"no"
7、引入外部文件
1)include引入外部文件
<#include "head/hearder.ftl">
2)import 引入外部文件
将引入的文件,放到一个变量中 可以配合macro指令使用
<#import "head/hearder.ftl" as head>
来源:oschina
链接:https://my.oschina.net/lion1220/blog/3191431