刚刚介绍了Thymeleaf模板,接下来我们学习FreeMarker模板,无论是语法还是配置等,两者都有很多相似的地方。接下来,我们学习Spring Boot项目整合FreeMarker模板。
新建项目,在项目中加入Freemarker依赖,如代码
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<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>
接下来配置FreeMarker模板属性,与Thymeleaf模板配置类似,唯一需要注意的是模板文件后缀配置的是FTL文件。配置文件如代码
server.port=8089
#缓存是否开启
spring.freemarker.cache=false
#编码格式
spring.freemarker.charset=UTF-8
#模板文件前缀
spring.freemarker.template-loader-path=classpath:/templates/
#模板文件后缀
spring.freemarker.suffix=.ftl
接下来,创建一个IndexController进行测试,内容如代码
package com.shrimpking.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.GetMapping;
/**
* Created by IntelliJ IDEA.
*
* @Author : Shrimpking
* @create 2023/12/21 10:45
*/
@Controller
public class IndexController
{
@GetMapping("/")
public String index(ModelMap modelMap){
modelMap.addAttribute("msg","hello,freemarker");
return "index";
}
}
在src/resources/templates下新建index.ftl(注意文件后缀),使用${msg}接收后来传送的数据,文件内容如代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>${msg}</h1>
</body>
</html>
到这里,项目配置完成。启动项目,在浏览器上访问http://localhost:8089,可以看到如下结果:
?
?接下来介绍FreeMarker的常用语法。
(1)通用赋值:${xxx}格式
? 比如后台返回键值aaa=string,可以使用${aaa?string},输出“Hi , Dalaoyang !”。
? 比如后台返回键值aaa="2018-08-01 23:59",可以使用${aaa?string("EEE,MMM d,yy")},输出:星期二,八月 14,18。
? 比如后台返回键值aaa=false,可以使用${aaa?string("是","否")},输出:否。
(2)数值赋值:#{xxx}或者#{xxx;format}格式后者format可以是以下格式(其中X和Y为数字):
? mX 小数部分最小X位,比如后台返回值aaa=3.782131,可以使用#{x;m2},输出3.78。
? MX 小数部分最大X位,比如后台返回值aaa=3.782131,可以使用#{x;M3},输出3.782。
? mXMY 小数部分最小X位,最大Y位,比如后台返回值aaa=3.782131,可以使用#{x;m1M3},输出3.782。
(3)常用内建函数
? html 对字符串进行HTML编码。
? lower_case 字符串转小写。
? upper_case 字符串转大写。
? trim 去前后空格。
? size 获取集合元素数量。
? int 获取数字部分。
(4)常用指令
? if elseif else 分支控制语句。
? list 输出集合数据。
? import 导入变量。
? include 类似于包含指令。
关于FreeMarker模板的内容到这里暂时结束了,毕竟这是一本关于Spring Boot的书,详细内容可以参考官方文档进行系统学习。