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

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 学习

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LO嘉嘉VE

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值