freeMarker随手笔记
freemarker官网:http://docs.freemarker.cn/
注意:
1.如果标签没有嵌套内容(在开始标签和结束标签之间的内容),那么可以只使用开始标签
(详情:http://freemarker.foofun.cn/dgui_template_valueinsertion.html)
2.插值使用内建函数c(代表''计算机'')是给计算机程序去识别,如:<a href="/shop/productdetails?id=${product.id?c}">Details...</a>
3.如果插值要生成HTML, 那么强烈建议你利用它来阻止跨站脚本攻击和非格式良好的HTML页面,如:
<#escape x as x?html>
<p>Title: ${book.title}</p>
<p>Description: <#noescape>${book.description}</#noescape></p>
<h2>Comments:</h2>
<#list comments as comment>
<div class="comment"> ${comment} </div>
</#list>
</#escape>
4.布尔值的插值使用:${married?string("yes", "no")}
一.使用
1.对象 -> ${key.property}
2.日期 -> 当前日期和时间:${date?datetime}
自定义日期格式:${date?string("yyyyMM/dd HH:mm:ss")}
(也可以使用FreeMarker的内建函数date,time和datetime来识别,如${lastUpdated?datetime})
3.处理不存在变量
(通过在变量名后面跟着一个 !(叹号)和默认值)
<h1>welcome ${user!"gg"}</h1>
(通过放置 ?? 来询问一个变量是否存在)
<#if user??><h1>welcome ${user}</h1><#/if>
(多级访问)
(animals.python.price)!0 ==> (animals.python.price)??
4.使用内建函数,如:
fruits?jion(",")通过连接所有项,将列表转换为字符串, 在每个项之间插入参数分隔符(比如 "orange,banana")
更多内建函数链接:http://freemarker.foofun.cn/ref_builtins.html
5.替换(方括号)语法,用 [#ftl]
来开始模板,如:
[#ftl]
<p>We have these animals:<table border=1><tr><th>Name<th>Price [#list animals as animal] <tr> <td> [#if animal.size == "large"]<b>[/#if] ${animal.name} [#if animal.size == "large"]</b>[/#if] <td>${animal.price} Euros [/#list] </table>
二.指令
1.if指令
<#if >
<#elseif >
<#else >
</#if >
2.list指令
(基本用法)
<#list studentList as student>
下标:${student_index}
</#list>
(只有当fruits有值时才循环)
<#list misc.fruits> <#list misc.fruits as fruit>
<ul> <ul>
<#items as fruit> => <li>${fruit}
<li>${fruit} </ul>
</#items> </#list>
</ul>
</#list>
(被sep覆盖的部分只有当还有下一项时才会执行,因此最后面没有逗号。else表示水果为0时执行)
<p>Fruits:<#list misc.fruits as fruit>${fruit}<#sep>,<#else>none</#list>
freeMarker随手笔记的更多相关文章
- JS SDK 随手笔记
JS SDK 随手笔记 窗口模块 Frame/Multi Frame 对话框 页面间的通讯 生命周期 窗口层叠 窗口模块 窗口模块是是AppCan移动应用界面最基本的单位.窗口是每个界面布局的基础,他 ...
- python3.x随手笔记2
对象,价值观和类型 对象 Python的抽象的数据. 所有的数据在一个Python程序 表示对象或对象之间的关系. (在某种意义上,在 符合冯诺依曼模型的代码也“存储程序计算机” 由对象.) 每一个对 ...
- python3.x随手笔记1
语法分析 Python程序读取的 解析器 . 解析器的输入流 令牌 ,生成的 词法分析程序 . 这一章描述了如何 词法分析程序把一个文件分解成令牌. Python读取程序文本作为Unicode代码点; ...
- C#基础随手笔记之基础操作优化
对数据的查询,删除等基本操作是任何编程语言都会涉及到的基础,因此,研究了一下C#中比较常用的数据操作类型,并顺手做个笔记. List查询时,若是处理比较大的数据则使用HashSet<T>类 ...
- FreeMarker系列学习笔记
FreeMarker是一个非常优秀的模板引擎,这个模板引擎可用于任何场景,FreeMarker负责将数据模型中的数据合并到模板中,从而生成标准输出.FreeMarker可以提供昜好的团队协作,对于界面 ...
- freemarker学习笔记
在模板中定义的变量有三种类型: 引用 1:plain变量:可以在模板的任何地方访问,包括使用include指令插入的模板,使用assign指令创建和替换. 2:局部变量:在宏定义体中有效,使用loca ...
- Java模板引擎之Freemarker 学习笔记 一
什么是Freemarker Freemarker是模板引擎,不是Web框架,只是视图层的组件,官网是 https://freemarker.apache.org/ Freemarker原理 数据模型+ ...
- C#入门随手笔记
1..Net Framework是Microsoft为开发应用程序而创建的一个开发平台. 运行操作系统不限:Microsoft版本运行在windows,Mono版本运行开Linux和MacOS: 应用 ...
- spring随手笔记4:ref的属性
1.local属性 引用在同一个xml的bean 只能引用bean的id <bean id="HelloWord" class="com.ltf ...
随机推荐
- CKAD个人考试心得
先晒一波本人的CKA和CKAD证书! 如下正式分享CKAD心得: 考试相关准备: l 练习:https://github.com/dgkanatsios/CKAD-exercises: l 网络:必须 ...
- python中的bytes和str类型
经过一上午的查找资料.大概理清楚了bytes类型和str类型的区别. bytes类型和str类型在呈现形式有相同之处,如果你print一个bytes类型的变量,会打印一个用b开头,用单引号括起来的序列 ...
- Android学习笔记主题(Theme)资源文件
安卓的主题资源文件,可以用于对Android应用的美化. styles文件是主题资源文件. 定义一个主题资源格式如下: <resources> <!-- Base applicati ...
- tensorflow-TFRecord 文件详解
TFRecord 是 tensorflow 内置的文件格式,它是一种二进制文件,具有以下优点: 1. 统一各种输入文件的操作 2. 更好的利用内存,方便复制和移动 3. 将二进制数据和标签(label ...
- C++ 进阶 模板和STL
C++提高编程 本阶段主要针对C++泛型编程和STL技术做详细讲解,探讨C++更深层的使用 1 模板 1.1 模板的概念 模板就是建立通用的模具,大大提高复用性 模板的特点: 模板不可以直接使用,它只 ...
- 【K8s学习笔记】K8s是如何部署应用的?
本文内容 本文致力于介绍K8s一些基础概念与串联部署应用的主体流程,使用Minikube实操 基础架构概念回顾 温故而知新,上一节[K8S学习笔记]初识K8S 及架构组件 我们学习了K8s的发展历史. ...
- 02 . Kubeadm部署Kubernetes及简单应用
kubeadm部署Kubernetes kubeadm简介 # kubeadm是一位高中生的作品,他叫Lucas Kaldstrom,芬兰人,17岁用业余时间完成的一个社区项目: # kubeadm的 ...
- git命令--使用fork模式工作
一. 1.第一步,先将原作者项目fork到自己的目录下,这个可以直接在控制台操作 可以看到该项目在ins-product目录下,fork之后,可以去查看自己的工作目录 可以看到在本人目录下已经存在该项 ...
- keras中loss与val_loss的关系
loss是训练集的损失值,val_loss是测试集的损失值 以下是loss与val_loss的变化反映出训练走向的规律总结: train loss 不断下降,test loss不断下降,说明网络仍在学 ...
- idea为本地项目创建仓库并git到云上
1.为本地项目创建一个本地仓库: 2.在码云上创建一个仓库,(初始化的时候先不要创建README.md文件) 3.本地仓库关联远程仓库:右键项目选址git>>repository>& ...