欢迎浏览我的博客 获取更多精彩文章
https://boyn.top
在maven中加入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-freemarker</artifactId>
<version>2.1.3.RELEASE</version>
</dependency>
在FreeMarkerProperties类里面,我们可以看到常用的freemarker配置
此处选一些常用的来说
String DEFAULT_TEMPLATE_LOADER_PATH = "classpath:/templates/";
//这个是选择默认的freemarker模板加载路径,默认是在/templates文件夹下面,在springboot项目中一般是resources/templates文件夹
String DEFAULT_PREFIX = "";
//默认前缀,默认值为空,建议不动
String DEFAULT_SUFFIX = ".ftl";
//默认后缀,即文件扩展名,为ftl,建议不动
String[] templateLoaderPath = new String[] { DEFAULT_TEMPLATE_LOADER_PATH };
//默认模板加载路径集,我们可以指定多个模板加载的路径
if指令是用来判断条件是否成立的.
其语法如下
<#if contition>
<#elseif contition>
<#else>
#if>
在这里需要注意的是,elseif中间跟java语法不一样,是没有空格的
我们实际演示一下
@GetMapping("/user")
public String getUser(Model model){
List<User> users = new ArrayList<>(10);
for (int i = 0; i < 10; i++) {
User u = new User(i,"Boyn"+i,"password"+i, new Random().nextInt(3));
users.add(u);
}
model.addAttribute("users", users);
return "user";
}
这里是一个User的Controller
<#list users as u>
<tr>
<td>${u.id}td>
<td>${u.username}td>
<td>${u.password}td>
<td>
<#if u.gender==1>
男
<#elseif u.gender==2>
女
<#else>
其他
#if>
td>
tr>
#list>
这里是一段.ftl文件
接下来我们看看会有什么效果
效果图如上
这个语句和if作用相同.如果将刚刚的例子转换成switch语句表示,则如下:
<#switch u.gender>
<#case 1>男<#break >
<#case 2>女<#break >
<#default >其他<#break >
#switch>
list是一个迭代输出的语句,用于输出数据模型中的集合元素.其语法如下
<#list collection as item>
#list>
其中和java中的循环一样,也可以在里面加入条件判断及时退出
<#list collection as item>
<#if contition><#break>#if>
#list>
实际演示在if语句的代码中已经包含,不再赘述
include语句用于加入模板文件,如头部,尾部文件等.
语法如下
<#include filename [options]>
options设置中有encoding和parse两个选项,encoding指定编码类型,parse选择是否以freemarker解析器进行解析,如为false,则当作普通的html,默认为true
我们先创建一个header文件
<html lang="en">
<head>
<meta charset="UTF-8">
<title>标题title>
head>
<body>
<h1>个人博客 boyn.toph1>
body>
html>
我们在user.ftl的body开始处,加入include语句
<body>
<#include "./header.ftl">
其效果如下:
包含在noparse标签里面的语句不会进行解析,即当作普通文本
<#noparse>
…
#noparse>