java freemarker 教程_一篇很全面的freemarker教程(二)

3一些常用方法或注意事项表达式转换类数字循环对浮点取整数给变量默认值判断对象是不是null常用格式化日期添加全局共享变量数据模型直接调用java对象的方法字符串处理(内置方法)在模板里对sequences和hashes初始化注释标志sequences内置方法hashes内置方法4 freemarker在web开发中注意事项web中常用的几个对象view中值的搜索顺序在模板里ftl里使用标签如何初始化共享变量与webwork整合配置5高级方法自定义方法自定义 Transforms1概念最常用的3个概念sequence  序列,对应java里的list、数组等非键值对的集合hash      键值对的集合namespace 对一个ftl文件的引用,利用这个名字可以访问到该ftl文件的资源2指令if, else, elseif语法...............#if>用例x is 1#if>x is 1x is not 1#if>switch, case, default, break语法...............#switch>用例字符串This will be processed if it is smallThis will be processed if it is mediumThis will be processed if it is largeThis will be processed if it is neither#switch>数字12d#switch>如果x=1 输出 1 2, x=2输出 2, x=3 输出dlist, break语法...#if>...#list>关键字item_index:是list当前值的下标item_has_next:判断list是否还有值用例${x_index + 1}. ${x},#if>#list>输出1. winter,2. spring,3. summer,4. autumninclude语法oroptions包含两个属性encoding=”GBK” 编码格式parse=true 是否作为ftl语法解析,默认是true,false就是以文本方式引入.注意在ftl文件里布尔值都是直接赋值的如parse=true,而不是parse=”true”用例/common/copyright.ftl包含内容Copyright 2001-2002 ${me}
All rights reserved.模板文件

Some test

Yeah.


输出结果

Some test

Yeah.


Copyright 2001-2002 Juila SmithAll rights reserved.Import语法类似于java里的import,它导入文件,然后就可以在当前文件里使用被导入文件里的宏组件用例假设mylib.ftl里定义了宏copyright那么我们在其他模板页面里可以这样使用"my"在freemarker里被称作namespacecompress语法...#compress>用来压缩空白空间和空白的行用例(1 2  3   4    5${moo}test onlyI said, test only#compress>)输出(1 2 3 4 5mootest onlyI said, test only)escape, noescape语法......#noescape>...#escape>用例主要使用在相似的字符串变量输出,比如某一个模块的所有字符串输出都必须是html安全的,这个时候就可以使用该表达式First name: ${firstName}Last name: ${lastName}#noescape>Maiden name: ${maidenName}#escape>相同表达式First name: ${firstName?html}Last name: ${lastName }Maiden name: ${maidenName?html}assign语法orororcapture this#assign>orcapture this#assign>用例生成变量,并且给变量赋值给seasons赋予序列值给变量test加1给my namespage 赋予一个变量bgColor,下面可以通过my.bgColor来访问这个变量将一段输出的文本作为变量保存在x里下面的阴影部分输出的文本将被赋值给x${n} #list>#assign>Number of words: ${x?word_list?size}${x}Hello ${user}!#assign>     error         true同时也支持中文赋值,如:java#assign>${语法}打印输出:javaglobal语法ororcapture this#global>全局赋值语法,利用这个语法给变量赋值,那么这个变量在所有的namespace中是可见的,如果这个变量被当前的assign语法覆盖如 在当前页面里x=2将被隐藏,或者通过${.global.x}来访问setting语法用来设置整个系统的一个环境localenumber_formatboolean_formatdate_format, time_format, datetime_formattime_zoneclassic_compatible用例假如当前是匈牙利的设置,然后修改成美国${1.2}${1.2}输出1,21.2因为匈牙利是采用“,”作为十进制的分隔符,美国是用“.”macro, nested, return语法.........#macro>用例Test text, and the params: ${foo}, ${bar}, ${baaz}#macro>输出Test text, and the params: a, b, 23Test text, and the params: a, b, -1Test text, and the params: a, Bar, 23Test text, and the params: a, Bar, -1定义循环输出的宏

${title?cap_first}:

  • ${x?cap_first}#list>
#macro>输出结果

Animals:

  • Mouse
  • Elephant
  • Python
包含body的宏#list>#macro>${c}. ${halfc} Last!#if>@repeat>输出1. 0.52. 13. 1.54. 2 Last!t, lt, rt语法 去掉左右空白和回车换行去掉左边空白和回车换行去掉右边空白和回车换行取消上面的效果3一些常用方法或注意事项表达式转换类${expression}计算expression并输出#{ expression }数字计算#{ expression ;format}安格式输出数字format为M和mM表示小数点后最多的位数,m表示小数点后最少的位数如#{121.2322;m2M2}输出121.23数字循环1..5 表示从1到5,原型number..number对浮点取整数${123.23?int} 输出123给变量默认值${var?default(“hello world
”)?html}如果var is null那么将会被hello world
替代判断对象是不是nullMouse found也可以直接${mouse?if_exists})输出布尔形常用格式化日期openingTime必须是Date型,详细查看freemarker文档 Reference->build-in referece->build-in for date${openingTime?date}${openingTime?date_time}${openingTime?time}添加全局共享变量数据模型在代码里的实现cfg = Configuration.getDefaultConfiguration();cfg.setSharedVariable("global", "you good");页面实现可以通过global指令,具体查看指令里的global部分直接调用java对象的方法${object.methed(args)}字符串处理(内置方法)html安全输出“abc
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
FreeMarker官方参考文档总共有四份,它们分别是  Designer's Guide(网上已有翻译,主要从FreeMarker 的概念上介绍)  Programmer's Guide(本文档所以翻译的部分,主要从框架的设计方面介绍)  XML Processing Guide(对XML数据模型处理的介绍)  Reference(FreeMarker 的参考文档,语言使用介绍) 中文翻译之所以选择 Programmer's Guide 是因为个人觉得该部分对如何实现 FreeMarker 进行了比较深入的阐述。有助于读者很好的了解其运作机制,以及去理解其他 模板引擎(如Velocity)的工作机理。 注:由于原文档部分内容直译可能难于被读者理解,所以有些地方采用意译为主,因此在翻译用词上 难 免 可 能 会 有 出 入 , 大 家 对 翻 译 的 内 容 有 任 何 意 见 都 可 以 给 我 直 接 发 邮 件 告 知 motomagice@yahoo.com.cn 目录 前言.........................................................................3 一、快速入门..............................................................4 1.1、创建配置实例..............................................................................4 1.2、创建数据模型(Data Model) ..........................................................4 1.3、获取模版(template) ..................................................................5 1.4、把模版与数据模型合并...................................................................6 1.5、完整的代码 ................................................................................6 、数据模型(Data Model) ..........................................7 2.1、基础类型...................................................................................7 2.2、Scalar类型(单值对应的Data Model)...............................................8 2.3、容器类型...................................................................................8 2.4、方法变量...................................................................................9 2.5、转换器变量 .............................................................................. 10 2.6、节点变量................................................................................. 12 2.7、对象包裹................................................................................. 12 三、配置(Configuration)........................................... 15 3.1、基础....................................................................................... 15 3.2、共享变量................................................................................. 15 3.3、配置参数................................................................................. 16 3.4、加载模板................................................................................. 17 3.5、异常处理................................................................................. 19 四、其它说明............................................................ 20 4.1、变量....................................................................................... 20 4.2、字符编码................................................................................. 20 4.3、多线程.................................................................................... 21 4.5、Bean 包裹................................................................................ 21

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值