Freemarker 学习笔记 《基本语法》
发布日期: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 元素>
  • ${
    元素.属性}
<#else>

这个集合是空的

遍历时在每个元素后添加分隔符,但最后一个元素通常我们是想除外的。可以用<#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
  • <#-- 输出效果 -->
        
    • 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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

    上一篇:集群与分布式
    下一篇:Spring MVC 学习笔记 8《集成 freemarker》

    发表评论

    最新留言

    网站不错 人气很旺了 加油
    [***.192.178.218]2024年05月05日 12时06分54秒