Freemarker 学习笔记 《基本语法》
1 2 3 <#-- 输出效果 -->
发布日期:2021-06-30 14:59:19
浏览次数:2
分类:技术文章
本文共 3076 字,大约阅读时间需要 10 分钟。
Freemarker 学习笔记 《基本语法》
基本语法
注释
注释 可以放在 FTL 标签 和 插值中
<#-- 我是 FreeMarker 注释 -->
插值
freemarke 标签
经常需要配合插值
使用。
${ 变量名}${ 表达式}${ "hello${对象.属性!}"} // ${} 可以嵌套在字符串内
这样就能解析出来,和EL
一样不知道是否巧合。
FreeMarker 函数
相当于 freeMarker
自动在变量上添加的成员方法,不过与常见的语言不同,不是用.
而是用?
来访问。同时它还支持链式调用。详细参考:
// java 代码String str = "abc";// FreeMarker${ str?html} // 进行HTML转义${ str?upper_case} // 转大写${ str?cap_first} // 首字母大写${ str?length} // 获取长度${ str?trim} // 守尾去空格
// java 代码Integer[] items = { 1,2,3,4,5}; // FreeMarker${ items?size} // 获取元素个数${ items?join(",")} // 集合转字符,用给定的分隔符连接元素
// java 代码Integer[] items = { 1,2,3,4,5}; // FreeMarker<#-- list 标签中的特定函数 -->${ item?index} // 获取 item 在 items 中的索引值,从 0 开始${ item?counter} // 获取 item 在 items 中的索引值,从 1 开始${ item?item_parity} // 根据 item 索引值的奇偶性,给出字符串 "odd" 或 "even"${ item?has_next} // 判断后面还有没有元素
其他
freeMarker
函数传参
${ 布尔变量?string("Y", "N")} // true : Y, false : N${ 布尔变量?item_cycle("奇数", "偶数")} // 类似于可以自定义的 item_parity${ 字符串?starts_with("B")} // 判断首字母是否为B
值为 null
的处理
${ userName!"热心网友"} // 如果 userName 为 null 则显示 “热心网友”${ age!18} // 如果 age为 null 则显示 18${ userName??} // 双问号判断 userName 是否纯在,返回 true 或 false
多级判断属性是否存在用括号(user.userName)
${ user.userName!"热心网友"} // 如果 user 不存在,会报错 ${ (user.userName)!"热心网友"} // 如果 user 不存在,不会会报错
常用标签
if 标签
判断条件可以是:布尔值、表达式
表达式支持布尔运算符:==
,!=
,大于小于
,大于等于
,小于等于
<#if 判断条件> 判断条件为 true 时,输出! <#if 判断条件> 判断条件为 true 时,输出!<#else> 判断条件为 false 时,输出! <#if 判断条件> 判断条件为 true 时,输出!<#elseif 判断条件2> 判断条件2为 true 时,输出!<#else> 判断条件为 false,判断条件2也为 false时,输出!
list 标签
此标签用于遍历集合。可嵌套
- <#list 集合 as 元素>
- ${ 元素.属性}
list
为空时不想输出 ul
标签可以这样:
<#list 集合>
- <#items as 元素>
- ${ 元素.属性}
list
为空时输出特定内容可以这样:
<#list 集合>
- <#items as 元素>
- ${ 元素.属性}
这个集合是空的
遍历时在每个元素后添加分隔符,但最后一个元素通常我们是想除外的。可以用<#sep>
来实现。
<#list 集合 as 元素> ${ 元素.属性}<#sep>,
跳出循环
<#list 集合 as 元素> <#if 元素.name == "笨笨"> <#break>大家好,我是${
元素.name}
include 标签
在当前位置插入其他文件内容。比如页眉页脚
- encoding=“UTF-8” //编码格式
- parse=true // true作为ftl引入,false作为文本引入。默认是true
笨笨的笨 <#include "/header.ftl" encoding="UTF-8" parse=true >大家好,我是笨笨,笨笨的笨,笨笨的笨,谢谢!/h1> 正文部分。。。 <#include "/footer.html" encoding="UTF-8" parse=true >
import 标签
<#import "模板的路径" as 命名空间>
<#import "common/test.ftl" as myns><#-- 使用 test.ftl 中定义的宏 --><@myns.宏名 >....
宏macro
定义宏
<#macro 宏名 参数1 参数2="默认值2" 参数3=默认值3> 输出: ${ 参数1}, ${ 参数2}, ${ 参数3}
使用宏
没传的参数会使用默认值
<@宏名 参数1="笨笨" 参数2="你好" 参数3=999 /> <@宏名 参数1="笨笨" 参数2="你好" /><@宏名 参数1="笨笨" 参数3=999 /><@宏名 参数1="笨笨"/>
嵌套宏
<#macro 宏名>
- <#nested>
- 1
- 2
- 3
嵌套宏带参数
<#macro 宏名 参数1> ${ 参数1},<#nested "我是笨笨", "笨笨的笨", "谢谢">! <#-- 使用宏 --><@宏名 参数1 = "大家好"; 嵌套宏参数1, 嵌套宏参数2, 嵌套宏参数3> ${ 嵌套宏参数1},${ 嵌套宏参数2},${ 嵌套宏参数2},${ 嵌套宏参数3} <#-- 输出效果 -->大家好,我是笨笨,笨笨的笨,笨笨的笨,谢谢!
return宏
<#macro 宏名> 这里的能容正常输出。 <#return> 这的内容在 return 之后,不会出现了。。。
参考资料
转载地址:https://jerryjin.blog.csdn.net/article/details/90815315 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
网站不错 人气很旺了 加油
[***.192.178.218]2024年05月05日 12时06分54秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
喜欢玩王者荣耀的有福了,用 Python 获取英雄皮肤壁纸
2019-05-01
一名数据分析师的SQL学习历程
2019-05-01
图解《金字塔原理》,7步掌握其精华!
2019-05-01
数据分析入门选择Python还是SQL?七个常用操作对比!
2019-05-01
最后一台,i7+6核电脑
2019-05-01
redis五种基本数据类型
2019-05-01
springboot整合redis框架
2019-05-01
以不同业务,redis分库概念
2019-05-01
使用redis实现订阅功能
2019-05-01
Redis主从配置
2019-05-01
Redis哨兵机制
2019-05-01
哨兵机制服务器环境准备
2019-05-01
携程Apollo动态配置日志级别
2019-05-01
SpringBoot整合Redis事务
2019-05-01
项目整合一级缓存和二级缓存
2019-05-01
自定义注解和aop抽取重复代码
2019-05-01
互联网API开放平台安全设计-基于OAuth2.0协议方式
2019-05-01
URL特殊字符转码
2019-05-01
对称加密整个过程
2019-05-01
java内存模型
2019-05-01