原文地址:http://dongwei.iteye.com/blog/231322
第一招:迭代Map
假设你有一个Map,像这样:
Xml代码
{"name":"mouse", "price":50 , "weight":30}
如何来迭代输出?
Html代码
<#-- 这里模拟了一个Map集合,定义了三对键值 -->
<#assign h = {"name":"mouse", "price":50, "weight":30}>
<#-- h?keys 将Map的key取出赋值,实质是调用了一个包装类的方法,
从这里我们也可以学到如何去调用一个类的方法 -->
<#assign keys = h?keys>
<#-- 关键点:${h[key]} 通过这样的方式,访问到了Map中的value属性 -->
<#list keys as key>${key} = ${h[key]}; </#list>
输出结果:
Html代码
name = mouse; price = 50; weight = 30;
第二招:如何判定字符串相等
这个有点小题大作,呵呵,其实很简单
Html代码
<#-- 定义了一种动物——狗 -->
<#assign annimal = "Dog">
<#-- 做一下条件判断,如果是狗就输出"Wang! Wang!"
注意:这里使用一个"="-->
<#if annimal = "Dog">
Wang! Wang!
<#else>
Ga! Ga!
</#if>
输出结果:
Html代码
Wang! Wang!
第三招:处理空值
先要说明的是,在freemarker中,如果你试图去访问一个不存在的值(null),或者该值在访问时还没有被初始化,
那么它会毫不犹豫的抛给一个错误,并且立即终止模板的执行过程。为什么这么变态?
如何对付这样的情况?
答案:在它访问这个值失败的时候,给它一个默认的值!嘻嘻……
怎么赋默认值?
用这样的语法:
unsafe_expr!default_expr 或 unsafe_expr! 或 (unsafe_expr)!default_expr 或 (unsafe_expr)!
例子:
Html代码
<#-- 想要输出mouse,但是它没有被赋值,所以指定默认值为"No mouse"
当然"!"后面的这个值可以是一个表达式-->
${mouse!"No mouse."}
<#-- 给mouse赋值 "Jerry" -->
<#assign mouse="Jerry">
<#-- 再次访问mouse -->
${mouse!"No mouse."}
输出结果:
Html代码
No mouse.
Jerry
另外对于"!"后面没有写任何值的情况,那么它的值可能是空String、空sequence 、空hash。
但是如果你想默认值是0或者false,那么你最好还是显式的指定,因为它不会对你那么友好的(Bad luck!)
还需要注意的是:
Html代码
1. product.color!"red"
2. (product.color)!"red"
这两种写法所表示的含义是不一样的:
第一种写法只处理color为空的情况,对于product为空则束手无策。
第二种写法则可以同时处理product及color同时(或任意)为空的情况。
插播,如何判断空值?
语法:unsafe_expr?? 或 (unsafe_expr)?? 返回值为true和false
第四招:几个常用的函数
使用函数的方式就像这样:user?upper_case 简单吧?
字符串函数:
html:将会把一些特殊的html字符替换掉(比如:把 "<" 替换为"<")
cap_first:首字母大写
lower_case:转化为小写
upper_case:转化为大写
trim:去掉首尾的空白,包括空格、Tab、回车、换行
例子:
Html代码
<#-- 定义test值为"Tom & Jerry" -->
<#assign test = "Tom & Jerry">
${test?html}
${test?upper_case?html}
输出为:
Tom & Jerry
TOM & JERRY
序列(也就是常说的List或Set等集合)函数:
size:显示该序列的大小
数学函数:
int:取整(例如: -1.9?int 返回值是 -1)
分享到:
相关推荐
freemarker的使用Demo,非常适用于freemarker初学,可与struts2结合使用。
freemarker中文手册是一本不错的全面介绍freemarker的书籍,适合freemarker初学者
freemarker初学者参考文档 包括:FreeMarker_Manual_zh_CN.pdf;FreeMarker+中文手册.pdf;FreeMarker教材.docx
此文档是关于前端页面freemarker模板的使用说明,很适合freemarker初学者学习
freemarker基本语法,对于freemarker初学者好处甚多
给初学者一个简单的利用freemarker生成xml文件的例子
这是一个Freemarker的中文版教程,适合想要学习Freemarker的初学者下载
freemarker 中文官方文档 很是好用便于初学则
一个初学者freemarker学习例子 一个初学者freemarker学习例子
freeMarker 教程 word版本的 很适合初学者 可以替代jsp的
自己整理的freemarker基础知识,适合初学者哦。
在开发web项目的时候使用到的页面展现技术,它并...总体,该文档能够提供所有常用的freemarker操作,示例和简略的讲解可以让人一下子就能上手,效率极高。 适合做快速查阅册子,同时也非常适合初学者和骨灰开发者使用。
适合初学freemarker的人参考的一个简单登录代码。主要是实现freemarker与struts2的整合
从最基础的讲起,快速理解FreeMarker工作原理,包括使用的基础语法和简单的project实例,希望初学者有较大收获。
freemarker的入门文档,可以帮助初学者了解freemarker模板技术。
freemarker java模板技术 很详细的注释 适合初学者,了解思路
Freemarker学习笔记可以帮助初学者了解,快速掌握Freemarker
freemarker源码,非常齐全的,并且很有代表性,是初学者的不二选择。
freemarker基础学习,是一本值得研究的书籍。对于初学者来说非常有用。
本案例是freemarker+struts实现的简单例子,适合初学者参考。