FreeMarker的maven引用及application配置见第一篇教程
SpringBoot+FreeMarker 学习(一)初识FreeMarker
string?html
给出 string
的HTML转义版本, 比如 &
会由 &
来代替。
string?upper_case
给出 string
值的大写版本 (比如 "ABC" 来替代 "abc")
string?cap_first
给出 string
的首字母大写版本(比如 "Abc" 来替代 "abc")
string?length
给出 string
值中字符的数量(对于 "abc" 来说就是3)
list?size
给出 list序列中项目的个数
list?join(", ")
通过连接所有项,将列表转换为字符串, 在每个项之间插入参数分隔符(比如 "item1,item2")
string?starts_with("A")
根据 string
的首字母是否是 "A
" 返回布尔值true或false。
boolean?string("Y", "N")
基于布尔值来返回字符串 "Y" 或 "N"。
在 <#list users as user>
和对应的 </#list>
标签中
user?index
给出了在 users
中基于0开始的 user
的索引值
user?counter
也像 index
, 但是给出的是基于1的索引值
user?item_parity
基于当前计数的奇偶性,给出字符串 "odd" 或 "even"。
user?item_cycle('lightRow','darkRow')
item_parity
更为常用的变体形式,奇数和偶数分别取lightRow和darkRow的值
例子:新建function.ftl模板文件
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>function</title>
</head>
<body>
<p>${username} function html ${username?html}
<p>${username} function upper_case ${username?upper_case}
<p>${username} function cap_first ${username?cap_first}
<p>${username} function length ${username?length}
<p>list function size ${users?size}
<p>list function join ${users?join(",", "name")}
<p>${username} function starts_with A ${username?starts_with("A")?string("yes", "no")}
<p>We have users:
<table border=1>
<tr><td>index<td>counter<td>item_parity<td>item_cycle<td>name<td>age
<#list users as user>
<tr><td>${user?index}<td>${user?counter}<td>${user?item_parity}<td>${user?item_cycle('lightRow','darkRow')}<td>${user.name}<td>${user.age}
</#list>
</table></body>
</html>
创建FunctionContoller
@Controller
@RequestMapping(value = "/function")
public class FunctionController {
@RequestMapping("/test")
public String includeLabel(String username, int userCount, Model model) {
List<User> users = new ArrayList<>();
for (int i = 0; i < userCount; i++) {
User user = new User();
user.setName(String.format("user%d", i + 1));
user.setAge(i + 20);
users.add(user);
}
model.addAttribute("users", users);
model.addAttribute("username", username);
return "function";
}
}
运行项目,访问地址: http://127.0.0.1:8080/function/test?username=test%3C%3E&userCount=10
html转义语法,这里展示不出来区别,可以查看网页源码
join方法,默认显示类的地址,我们重写一下User实体类的toString方法,可以让他显示用户名称
@Getter
@Setter
public class User {
private String name;
private int age;
@Override
public String toString() {
return name;
}
}
重新启动项目,再次访问