常用于使用FreeMarker + Minio作为项目中的带格式的大文本解决方案
- 引入FreeMarker依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>
- 修改配置文件
server:
port: 8881 #服务端口
spring:
application:
name: freemarker-demo #指定服务名
freemarker:
cache: false #关闭模板缓存,方便测试
settings:
template_update_delay: 0 #检查模板更新延迟时间,设置为0表示立即检查,如果时间大于0会有缓存不方便进行模板测试
suffix: .ftl #指定Freemarker模板文件的后缀名
- 在resource下编写ftl模板文件
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Hello World!</title>
</head>
<body>
<b>普通文本 String 展示:</b><br><br>
Hello ${name} <br>
<hr>
<b>对象Student中的数据展示:</b><br/>
姓名:${stu.name}<br/>
年龄:${stu.age}
<hr>
</body>
</html>
- 编写接口进行测试
需要注意
@RestController包括@Controller+@ResponseBody注解
要想返回到相应的视图,不能加@ResponseBody注解所以此处仅使用@Controller
只需要将值丢进model的属性中即可
@Controller
public class HelloController {
@GetMapping("/basic")
public String test(Model model) {
//1.纯文本形式的参数
model.addAttribute("name", "freemarker");
//2.实体类相关的参数
Student student = new Student();
student.setName("小明");
student.setAge(18);
model.addAttribute("stu", student);
return "01-basic";
}
}
- 测试
6. FreeMarker语法
6.1 list遍历语法
使用<#list students as student></#list>来遍历集合
得到的student对象就是其中的item
在插值语法插入Date类型的时候会报错
这里可以使用string函数来转化为想要的格式
使用 ${student_index}可以获得遍历的索引
${student.birthday?string("yyyy.MM.dd")}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>${name}</title>
</head>
<body>
<table>
<tr>
<td>
序号
</td>
<td>
姓名
</td>
<td>
年龄
</td>
<td>
生日
</td>
<td>
钱包
</td>
</tr>
<#list students as student>
<tr>
<td>
${student_index + 1}
</td>
<td>
${student.name}
</td>
<td>
${student.age}
</td>
<td>
${student.birthday?string("yyyy.MM.dd")}
</td>
<td>
${student.money}
</td>
</tr>
</#list>
</table>
</body>
</html>
6.2 map遍历语法
map的语法主要是两种方式
方式一:通过map[‘keyname’].property
方式二:通过map.keyname.property
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>${name}</title>
</head>
<body>
<table>
<h2>${studentMap1.title}</h2>
<tr>
<td>
序号
</td>
<td>
姓名
</td>
<td>
年龄
</td>
<td>
生日
</td>
<td>
钱包
</td>
</tr>
<#list studentMap2["studentList"] as student>
<tr>
<td>
${student_index + 1}
</td>
<td>
${student.name}
</td>
<td>
${student.age}
</td>
<td>
${student.birthday?string("yyyy.MM.dd")}
</td>
<td>
${student.money}
</td>
</tr>
</#list>
</table>
</body>
</html>
6.3 if语法
if语法使用<#if>标签,在两个if标签中间还可以添<#else>标签
demo:如果是小红就变红
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>hello</title>
</head>
<body>
<table>
<tr>
<td>
序号
</td>
<td>
姓名
</td>
<td>
年龄
</td>
<td>
生日
</td>
<td>
钱包
</td>
</tr>
<#list students as student>
<#if student.name=="小红">
<tr style="color: red">
<td>
${student_index + 1}
</td>
<td>
${student.name}
</td>
<td>
${student.age}
</td>
<td>
${student.birthday?string("yyyy.MM.dd")}
</td>
<td>
${student.money}
</td>
</tr>
<#else>
<tr>
<td>
${student_index + 1}
</td>
<td>
${student.name}
</td>
<td>
${student.age}
</td>
<td>
${student.birthday?string("yyyy.MM.dd")}
</td>
<td>
${student.money}
</td>
</tr>
</#if>
</#list>
</table>
</body>
</html>