SpringBoot+FreeMarker 学习(四)FreeMarker常用内建函数

发布于:2022-10-13 ⋅ 阅读:(382) ⋅ 点赞:(0)

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;
    }

}

重新启动项目,再次访问

 

测试代码地址: HelloFreeMarker: SpringBoot+FreeMarker 学习


网站公告

今日签到

点亮在社区的每一天
去签到