FreeMarker模板使用小结
手册写的不错,忘记的时候可以翻翻n(*≧▽≦*)n
--------------------------------------------分割线--------------------------------------------
1.插值--通用
<div>${expr}</div>
2.插值结合运算符
为了处理缺失变量,FreeMarker提供了两个运算符: (用于防止对象不存在而导致的异常报错 )
! : 指定缺失变量的默认值
?? : 判断某个变量是否存在,返回boolean值
比如:
<#if item??>
<div>${item}</div>
</#if>
又或者:
<#if (item.name)??>
<div>${item.name!'admin'}</div>
</#if>
特别提示:
<#if (item.name)??></#if> 与 <#if item.name??></#if>是不一样的哦,前者判断item和name是否为空,而后者指判断name是否为空!
3.内置函数
html :字符串中所有的特殊 HTML 字符都需要用实体引用来代替(比如 < 代替 < )
trim :去掉字符串前后的空白字符
size : 序列(seqlist)中元素的个数
string :指定格式,常用日期
例子:
${item.date?string('yyyy-MM-dd HH:mm:ss')} //日期格式
${item?string.number} //数字格式
${item.money!?string("0.00")} 元 //金钱格式
?html 用于将字符串中可能包含的html字符,进行过滤.
4.对象的使用
obj.Map()
使用{}包住,以成对的键值存在;
可以混合使用.和[""],例如item.stu['name'];
5.逻辑判断
<#if condition>...
<#elseif condition2>...
<#else>...
6.列表循环
<#list items as item>
${item}
</#list>
item_index为当前变量的索引值,从0开始
item_has_next是否存在下一个对象(来辨别当前项是否是序列的最后一项的布尔值)
手册示例:
<#assign seqlist=["spring","summer","autumn","winner"]>;
<#list seqlist as item>
${item_index + 1}.${item} <#if item_has_next>,</#if>
</#list>
结果是按数组顺序输出!
7.assign指令创建
<#assign num=1 > (创建变量num)
<#assign num=num+1 > (替换变量num)
可以在任何地方使用访问
8.空值(或不存在)变量的判断
<#if item.name??></#if> (询问变量是否存在)
${user!"Anonymous"} 或者 ${user!}(指定默认)
特别注意几点:
FreeMarker模板语言没有null关键字,所以不能判断变量是否为Null;
FreeMarker 不能容忍引用不存在的变量,除非明确地告诉它当变量不存在时如何处理;
不存在的变量和一个值为null的变量,是一样的。
9.特殊字符
\r 回车
\n 换行
\" 双引号
\' 单引号
\t Tab
\b 退格键
\\ 反斜杠
注意**
> gt
>= gte
< lt
<= lte
10.include 导入其他页面
<#include "../header.html" />
插入另外一个指定路径的 FreeMarker 模板文件,输出格式是在include标签出现的地方插入;
区分:
<@include_page path="../header.html"/>
会开始一个独立的 HTTP 请求处理,一般不用;
JSP写法:
<jsp:include page="path/to/some.jsp">
--------------------------------------------分割线--------------------------------------------
上面总结的都是我平时用到的一些指令语法等内容,其他没有用到的我就暂时没有放上来,以后会继续补充哒n(*≧▽≦*)n!
FreeMarker模板使用小结的更多相关文章
- Spring MVC 学习总结(七)——FreeMarker模板引擎与动态页面静态化
模板引擎可以让程序实现界面与数据分离,业务代码与逻辑代码的分离,这就提升了开发效率,良好的设计也使得代码复用变得更加容易.一般的模板引擎都包含一个模板解析器和一套标记语言,好的模板引擎有简洁的语法规则 ...
- Spring 4 使用Freemarker模板发送邮件&添加附件
前言 Spring对Java的邮件发送提供了很好的支持,提供了超级简单的API,大大简化了Java邮件发送功能的开发. Spring对Email的支持是基于JavaMail API开发的,所以,我们在 ...
- FreeMarker模板开发指南知识点梳理
freemarker是什么? 有什么用? 怎么用? (问得好,这些都是我想知道的问题) freemarker是什么? FreeMarker 是一款 模板引擎: 即一种基于模板和要改变的数据, 并用来生 ...
- 161213、Maven资源替换和Freemarker模板
先介绍一下本文的两位主角: Apache Maven - 正当红的项目管理工具 FreeMarker - 老牌的模板引擎 两者貌似互不相干,何来冲突呢? 原来Maven有一个内置的资源替换机制, 可以 ...
- FreeMarker模板引擎
现在开发的项目,也是基于SOA架构,每个功能接口都是用WebService实现,Web服务的通信协议就是用XML来传输. 以前写WebService都是自动生成XML,没想到这项目竟然要自己定义XML ...
- FreeMarker模板语法
四.FreeMarker模板语法 要编写复杂的模板需要熟悉FreeMarker语法规则,官网有详细说明,中文帮助也比较详细了,下面这些内容是从网上收罗来的,感谢网友的分享,经过整理与修改的内容如下.建 ...
- Spring Boot 系列(五)web开发-Thymeleaf、FreeMarker模板引擎
前面几篇介绍了返回json数据提供良好的RESTful api,下面我们介绍如何把处理完的数据渲染到页面上. Spring Boot 使用模板引擎 Spring Boot 推荐使用Thymeleaf. ...
- 安装freemarker模板的ftl插件
安装freemarker模板的ftl插件 同意协议 等待运行完成 重新启动eclipse 查看是否生效
- JFinal配合Shiro权限控制在FreeMarker模板引擎中控制到按钮粒度的使用
实现在FreeMarker模板中控制对应按钮的显示隐藏主要用到了Shiro中的hasRole, hasAnyRoles, hasPermission以及Authenticated等方法,我们可以实现T ...
随机推荐
- Python 字典和集合
泛映射类型 collections.abc 模块中有 Mapping 和 MutableMapping 这两个抽象基类,它们的作用是为 dict 和其他类似的类型定义形式接口(在Python 2.6 ...
- 学习笔记TF049:TensorFlow 模型存储加载、队列线程、加载数据、自定义操作
生成检查点文件(chekpoint file),扩展名.ckpt,tf.train.Saver对象调用Saver.save()生成.包含权重和其他程序定义变量,不包含图结构.另一程序使用,需要重新创建 ...
- Windows环境下Mysql如何快速导入或恢复表为innodb的数据
注: 一.这个是对Innodb的数据恢复.MyISAM不需要这么麻烦,只要数据文件存在直接复制过去就可以. 二.该方法只适用于 1:想要恢复或者导入表的ibd文件和frm文件 2:你不仅需有ibd和f ...
- HTML,CSS,JS之间的关系
HTML,CSS,JS之间的关系 本笔记是自己在浏览了各位前辈后拼凑总结下来的知识,供自己使用消化.后面会附上各种链接地址,尊重原创 最准确的网页设计思路是把网页分成三个层次,即:结构层(HTML). ...
- windbg内存查看(d*)
d*命令 d{a|b|c|d|D|f|p|q|u|w|W} Address [/c ColumuWidth] [l Length] Address:查看address地址处的内存. ColumnWid ...
- 知名渗透测试利器分享 - Appscan下载
安全测试应该是测试中非常重要的一部分,但他常常最容易被忽视掉. 尽管国内经常出现各种安全事件,但没有真正的引起人们的注意.不管是开发还是测试都不太关注产品的安全.当然,这也不能怪我们苦B的" ...
- JVM(一) OpenJDK1.8源码在Ubuntu16.04下的编译
笔者最近在学习周志明老师编写的<深入理解Java虚拟机>一书,书中第一章的实战部分就是"自己编译JDK",不过书中提到的是OpenJDK 7的编译.由于现在Java开发 ...
- Web.py 框架学习笔记 - URL处理
最近由于工作需要开始学习基于python的web应用框架web.py.为了方便学习,将学习心得逐日记下以便日后复习. URL 模板: web.py提供了一套url处理的模板,在python工程中,只需 ...
- 深入理解 JavaScript 中的 replace 方法(转)
replace方法是属于String对象的,可用于替换字符串. 简单介绍: StringObject.replace(searchValue,replaceValue) StringObject:字符 ...
- 物联网socket通讯设备android
http://cache.baiducontent.com/c?m=9d78d513d99c16ee19bec1291a17a7384215c634608090027ea48439e573284b50 ...