Rhythmk 一步一步学 JAVA (10): Freemarker 学习 1 - 入门
FreeMarker 笔记:
1、 注释:
<#-- 注释内容 -#>
2、<#if condition>
content1
<#else>
content2
<#if>
条件可以表示:a==b , a!=b,a>b,a<b ,a<=b,||,&&,!等
eg:
<#if user.name=="rhythmk">
A good boy!
<#if>
3、list 指令
<#list dataItems as d >
${d.item1} ,${d.item2}
<#list>
4、include 指令:
<#include "file路径" >
eg:
导入HTML页脚
<#include "/_foot.html">
5、空值处理
5.1、${obj!"ReplaceString"}
如果obj存在值则显示obj 不存在则用"ReplaceString"替换
5.2、 <#if obj??> content <#if>
如果obj为空 则隐藏整个语句块输出内容。
6、${} 输出
${user} <#-- 用user作字符串 -->
${user.age} <#-- 用user座位哈希表 -->
${user.age/10+2} <#-- 可以在${}进行计算-->
eg:
user.name="abcd"
${user.name[1]} 输出结果为"b"
7、转义符输出,在前面加 r
eg:
${r"${rhythmk}"}
输出
${rhythmk}
如果:${"name,${name}"}
name="rhythmk"
输出:
name,rhythmk
8、序列输出
<#list ["a","b","c"] as x>
${x}
<#list>
9、调用自定义方法
${doSomething(str)}
10、 输出HTML编码内容。 escape 与 noescape 指令
<#escape x as x?html>
编码HTML内容
<#noescape>无需编码HTML内容 http://www.cnblogs.com/rhythmK</#noescape>
<#escape>
11、宏的定义
11.1、普通宏定义:
<#macro greet> <font size="12">hello rhythmk!</font> </#macro>
调用宏:
<@greet></@greet>
11.2 、带参数的宏
<#macro greet name> The name is ${name}</#macro>
调用:
<@greet name="rhythmk" />
11.3、将内容嵌套的宏定义,用 “<#nested>”表示替换的内容。
<#macro span>
<span>
<#nested>
</span>
<#macro>
12 、assign 变量创建
<#assign x=10>
${x}
<#assign x=x+10>
${x}
输出:
10 20
13、生命周期:
定义/lib/mytest.ftl 文件内容如下(可包含宏以及定义):
<#assign Age=10>
调用页面:
先引入:
<#import "/lib/mytest.ftl" as r>
${r.Age}
输出:
10
http://www.cnblogs.com/rhythmK
备注:freemarker 指令是区分大小写的
Rhythmk 一步一步学 JAVA (10): Freemarker 学习 1 - 入门的更多相关文章
- 五分钟学Java:如何学习Java面试必考的网络编程
原创声明 本文作者:黄小斜 转载请务必在文章开头注明出处和作者. 本文思维导图 简介 Java作为一门后端语言,对于网络编程的支持是必不可少的,但是,作为一个经常CRUD的Java工程师,很多时候都不 ...
- 五分钟学Java:如何学习Java面试必考的JVM虚拟机
原创声明 本文首发于微信公众号[程序员黄小斜] 本文作者:黄小斜 转载请务必在文章开头注明出处和作者. 本文思维导图 为什么要学习JVM虚拟机 最近的你有没有参加Java面试呢?你有没有发现,Java ...
- Java SSH框架学习(入门)
SSH就是 struts+spring+hibernate 的一个集成框架,是java中一种流行的JAVA WEB 应用程序开源框架.由于我最熟悉的还是ASP.NET的的MVC和Python的Djan ...
- 小白学Java:包装类
目录 小白学Java:包装类 包装类的继承关系 创建包装类实例 自动装箱与拆箱 自动装箱 自动拆箱 包装类型的比较 "=="比较 equals比较 自动装箱与拆箱引发的弊端 自动装 ...
- 学java得这样学,学习确实也得这样
引言 软件开发之路是充满荆棘与挑战之路,也是充满希望之路.Java学习也是如此,没有捷径可走.梦想像<天龙八部>中虚竹一样被无崖子醍醐灌顶而轻松获得一甲子功力,是很不现实的.每天仰天大叫& ...
- 一步一步学Silverlight 2系列(10):使用用户控件
概述 Silverlight 2 Beta 1版本发布了,无论从Runtime还是Tools都给我们带来了很多的惊喜,如支持框架语言Visual Basic, Visual C#, IronRuby, ...
- 一步一步学ROP之linux_x64篇
一步一步学ROP之linux_x64篇 一.序 **ROP的全称为Return-oriented programming(返回导向编程),这是一种高级的内存攻击技术可以用来绕过现代操作系统的各种通用防 ...
- 一步一步学ZedBoard & Zynq(四):基于AXI Lite 总线的从设备IP设计
本帖最后由 xinxincaijq 于 2013-1-9 10:27 编辑 一步一步学ZedBoard & Zynq(四):基于AXI Lite 总线的从设备IP设计 转自博客:http:// ...
- 一步一步学android控件(之十五) —— DegitalClock & AnalogClock
原本计划DigitalClock和AnalogClock单独各一篇来写,但是想想,两个控件的作用都一样,就和在一起写一篇了. DegitalClock和AnalogClock控件主要用于显示当前时间信 ...
随机推荐
- java小知识点 2015/10/6
java中length,length(),size()区别: 1 java中的length属性是针对数组说的,比如说你声明了一个数组,想知道这个数组的长度 2 java中的length()方法是针对字 ...
- js中怎么去掉数组的空值
for(var i = 0 ;i<array.length;i++) { if(array[i] == "" || typeof(array[i] ...
- flask第十九篇——模板【3】
请关注微信公众号:自动化测试实战 今天我们继续模板的知识,现在我们增加字典的复杂度,这个时候在render_template第二个参数可以传**title,以后我们会用**context代替原来的ti ...
- 数学杂烩总结(多项式/形式幂级数+FWT+特征多项式+生成函数+斯特林数+二次剩余+单位根反演+置换群)
数学杂烩总结(多项式/形式幂级数+FWT+特征多项式+生成函数+斯特林数+二次剩余+单位根反演+置换群) 因为不会做目录所以请善用ctrl+F 本来想的是笔记之类的,写着写着就变成了资源整理 一些有的 ...
- c# String.Split数组省去空字符
public static void test() { string txt = "hi[#b1.jpg][#b4.jpg]few[#b1-3.jpg]"; txt = " ...
- Spring注入方式及用到的注解
注入方式: 把DAO实现类注入到service实现类中,把service的接口(注意不要是service的实现类)注入到action中,注 入时不要new 这个注入的类,因为spring会自动注入,如 ...
- 军哥LNMP优化
http://bbs.vpser.net/thread-8914-1-1.html http://www.zxsdw.com/index.php/archives/881/ 修改/usr/local/ ...
- Apache Kafka 0.9消费者客户端
当Kafka最初创建时,它与Scala生产者和消费者客户端一起运送.随着时间的推移,我们开始意识到这些API的许多限制.例如,我们有一个“高级”消费者API,它支持消费者组并处理故障转移,但不支持许多 ...
- Emacs golang用户代码无法补全问题
现象:Emacs使用company-go可以正常补全标准库函数和go get安装库函数:而对于自已写的代码,只能补全当前包下的变量和函数. 原因:company-go后台是使用了gocode,而goc ...
- 性能监控之Spotlight
有和同事探讨一些技术监控类软件,谈到Spotlight,临时记一下. 下载地址https://pan.baidu.com/s/1HB9xd9LmOR-MOk8FIGBm-A 常规安装模式,下载解压安装 ...