Freemarker基本语法
一、概念
Freemarker是一款模板引擎,并用来输出文本,网页或配置文件等。
二、语法
2.1 注释
<!-- 在页面可以看的到 -->
<#-- 在页面看不到 -->
2.2 数据类型
布尔类型boolean
不能直接输出,需要转换成字符串,用c转换。
后端返回msg=true
# 错误
${msg}
# 正确
方法一: ${msg?c}
方法二: ${msg?string}
方法三: ${msg?string('是字符串','不是字符串')}
输出
true
true
是字符串
日期类型date
不能直接输出,需要转换成字符串,用c转换。
数值类型
等于java中的int,float,double等类型。
字符串类型
等于java中的字符串。
空值处理
不存在会报错,null也会报错,
解决:传空字符串"",加感叹号{msg!}
sequence类型
等于java中的数组list,set类型。
# 遍历集合
<#list 序列名 as 元素名>
${元素名}
</#list>
hash类型
等于java的Map类型。
# key遍历,获取key和key对应的value
<#list hash?key as key>
${key}---${hash[key]}
</#list>
# value遍历,直接获取value
<#list hash?values as value>
{value}
</#list>
2.3 常用指令
自定义变量assign
# 定义单个
<#assign str = "hello">
#{str}
</#assign>
# 定义多个,根据逗号分割成字符串
<#assign name = "qinag" names=["强1","强2","强3"]>
#{str}
#{names?join(',')}
</#assign>
条件控制语句if...elseif...else
# 格式
<#if 条件1>
...
<#ifelse 条件2>
...
<#ifelse 条件3>
...
<#else>
...
<#/if>
# 条件不为空时才遍历
<#if 序列名??>
<#list 序列名 as 元素名>
${元素名}
</#list>
</#if>
<#list 序列名 as 元素名>
${元素名}
<#else>
没有条件时执行这部分语句
</#list>
三、自定义指令
可以使用macro定义,可以传参,可以重复使用。
3.1 自定义指令
<#macro phone>
18912354231
</#macro>
使用自定义指令
<@phone></@phone>
3.2 自定义指令传参
<#macro queryByName name passwd>
根据用户名查询 - ${name}
密码是 - ${passwd}
</#macro>
使用自定义传参指令
<@queryByName name='admin' passwd='123456'></@queryByName>
3.3 nested占位指令
<#macro test>
这是一段文本
<#nested>
</#macro>
使用nested占位指令
<@test>xxxxxx</@test>
则优先显示“这是一段文本”
四、导入指令
4.1 import
import指令可以导入一个库,它创建一个新的命名空间,然后在那个命名空间中执行给定路径的模板,可以使用引入空间的指令。
commons.ftl
<#maro cfb>
QQ: 875667601
</#maro>
test.ftl
<#-- 导入命名空间 -->
<#import "commons.ftl" as common>
<#-- 使用导入的命名空间 -->
<@common.cfb></@common.cfb>
4.2 include
include包含指令。
可以使用include指令在模板中插入另外一个模板,被包含的模板输出在include的位置上,像是复制进去了一样。
<#include "test.ftl">
<#include "test.txt">
<#include "test.html">
五、运算符
5.1 算数运算符
# 加 减 乘 除 取模
+ - * / %
5.2 逻辑运算符
# 与 或 非
&& || !
5.3 比较运算符
# 大于 小于 等于 大于等于 小于等于 不等于
>(gt)
<(lt)
=
>=(gte)
<=(lte)
!=
5.4 空值运算符
# 判断是否为空,返回布尔类型
??
${(name??)?string}
# 如果为空,设置默认值
@
${name! '小强'}
作者(Author):小强崽
来源(Source):https://www.wuduoqiang.com/archives/Freemarker基本语法
协议(License):署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)
版权(Copyright):商业转载请联系作者获得授权,非商业转载请注明出处。 For commercial use, please contact the author for authorization. For non-commercial use, please indicate the source.
Freemarker基本语法的更多相关文章
- FreeMarker模板语法
四.FreeMarker模板语法 要编写复杂的模板需要熟悉FreeMarker语法规则,官网有详细说明,中文帮助也比较详细了,下面这些内容是从网上收罗来的,感谢网友的分享,经过整理与修改的内容如下.建 ...
- FreeMarker常用语法
转自:http://www.cnblogs.com/linjiqin/p/3388298.html FreeMarker的插值有如下两种类型:1,通用插值${expr};2,数字格式化插值:#{exp ...
- freemarker常见语法大全
推荐freemarker系列教程:http://swiftlet.net/archives/category/freemarker FreeMarker的插值有如下两种类型:1,通用插值${expr} ...
- 网页静态化解决方案-Freemarker demo+语法
1.网页静态化技术Freemarker 1.1为什么要使用网页静态化技术 网页静态化解决方案在实际开发中运用比较多,例如新闻网站,门户网站中的新闻频道或者是文章类的频道. 对于电商网站的商品详细页来说 ...
- freemarker常见语法大全,灰常有用!
由于公司前端使用的技术是freemarker,于是没事就在网上看看别人写的关于freemarker的文章,感觉freemarker灰常简单,比jsp好用,jsp太乱太臃肿了,另外推荐大家看看freem ...
- FreeMarker基础语法,宏,引用 等
FreeMarker的插值有如下两种类型: 1,通用插值${expr}; 2,数字格式化插值:#{expr}或#{expr;format} ${book.name?if_exists } //用于判断 ...
- FreeMarker基本语法的使用
参考博客: http://www.cnblogs.com/panchanggui/p/9346574.html https://blog.csdn.net/zyy88886666/article/de ...
- FreeMarker常用语法学习
1.API网址 http://freemarker.sourceforge.net/docs/ 2.一个Table的例子 freemarker 对表格的控制 这里将所有需要在一个区域显示到数据全部ad ...
- freemarker常见语法
FreeMarker的插值有如下两种类型:1,通用插值${expr};2,数字格式化插值:#{expr}或#{expr;format} ${basketball.name?if_exists } / ...
随机推荐
- 【故障公告】redis 服务器宕机引发博客站点故障
非常抱歉,今天下午 17:10~17:40 左右,由于博客系统所使用的 redis 服务器宕机,造成博客站点无法正常访问,由此给您带来很大的麻烦,请您谅解. 我们会针对这次故障改进 redis 服务器 ...
- 深入理解Java多线程——ThreadLocal
目录 定义 API 场景分析 场景实验,观察Spring框架在多线程场景的执行情况 10000此请求,单线程 10000次请求,线程数加到100 对c的访问加锁 把c设为ThreadLocal 收集多 ...
- 【动画消消乐】HTML+CSS 自定义加载动画:清新折叠方块效果 063(附源码及原理详解)
前言 Hello!小伙伴! 非常感谢您阅读海轰的文章,倘若文中有错误的地方,欢迎您指出- 自我介绍ଘ(੭ˊᵕˋ)੭ 昵称:海轰 标签:程序猿|C++选手|学生 简介:因C语言结识编程,随后转入计算机专 ...
- 如何监控 Log4j2 异步日志遇到写入瓶颈
如何监控 Log4j2 异步日志遇到写入瓶颈 在之前的一篇文章中(一次鞭辟入里的 Log4j2 异步日志输出阻塞问题的定位),我们详细分析了一个经典的 Log4j2 异步日志阻塞问题的定位,主要原因还 ...
- springMVC-2-MVC初步了解
Spring MVC的特点 轻量级,简单易学 高效 , 基于请求响应的MVC框架 与Spring兼容性好,无缝结合 约定优于配置 功能强大:RESTful.数据验证.格式化.本地化.主题等 简洁灵活 ...
- 10、Java——内部类
1.类中定义类 (1)当一类中的成员,作为另外一种事物的时候,这个成员就可以定义为内部类. (2)分类:①成员内部类 ②静态内部类 ③私有内部类 ④局部内部类 ⑤匿名内部类 ⑥Lambda表达式 ...
- bs4爬取笔趣阁小说
参考链接:https://www.cnblogs.com/wt714/p/11963497.html 模块:requests,bs4,queue,sys,time 步骤:给出URL--> 访问U ...
- 迈达斯midas Gen 2019 2.1 中文汉化安装教程
midas Gen 2019 v2.1 for win是一款关于结构设计有限元分享的工具,分为建筑领域.桥梁领域.岩土领域.仿真领域四个大类.具有人性化的操作界面,且采用了优秀的的计算机显示技术,是建 ...
- Hybrid接口
目录 一.Hybrid接口 1.1 VLan的基本概念 1.2 Hybrid接口特点 1.3 Hybrid接口工作原理 1.4 Hybrid配置 一.Hybrid接口 1.1 VLan的基本概念 特点 ...
- Java异常02——自定义异常
Error与Exception与自定义异常 Error与Exception Error Exception 自定义异常 快捷键: ctrl + alt + t package exception.d ...