《freemarker开发指南》由会员分享,可在线阅读,更多相关《freemarker开发指南(11页珍藏版)》请在金锄头文库上搜索。
1、FreeMarker开发指南 1概念2指令if, else, elseif switch, case, default, breaklist, break include Import compress escape, noescape assign global setting macro, nested, returnt, lt, rt 3一些常用方法或注意事项 表达式转换类 数字循环 对浮点取整数 给变量默认值 判断对象是不是 null 常用格式化日期 添加全局共享变量数据模型 直接调用 java对象的方法 字符串处理(内置方法) 在模板里对 sequences和 hashes初始化 注
2、释标志 sequences内置方法 hashes内置方法 4 freemarker在 web开发中注意事项 web中常用的几个对象 view中值的搜索顺序 在模板里 ftl里使用标签 如何初始化共享变量 与 webwork整合配置 5高级方法 自定义方法 自定义 Transforms 1概念最常用的 3个概念sequence 序列,对应 java里的 list、数组等非键值对的集合hash 键值对的集合namespace 对一个 ftl文件的引用,利用这个名字可以访问到该 ftl文件的资源2指令if, else, elseif语法.用例x is 1x is 1x is not 1switch,
3、 case, default, break语法.用例字符串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数字12d如果 x=1 输出 1 2, x=2 输出 2, x=3 输出 d或1 2 d list, break语法.关键字item_index:是 list当前值的下标item_has_next:判断 list是否还有值用例$x_inde
4、x + 1. $x,输出1. winter,2. spring,3. summer,4. autumn include语法oroptions包含两个属性encoding=”GBK” 编码格式parse=true 是否作为 ftl语法解析,默认是 true,false 就是以文本方式引入.注意在 ftl文件里布尔值都是直接赋值的如 parse=true,而不是 parse=”true”用例/common/copyright.ftl包含内容Copyright 2001-2002 $meAll rights reserved. 模板文件Some testYeah. 输出结果Some testYeah
5、.Copyright 2001-2002 Juila SmithAll rights reserved. Import语法类似于 java里的 import,它导入文件,然后就可以在当前文件里使用被导入文件里的宏组件用例假设 mylib.ftl里定义了宏 copyright那么我们在其他模板页面里可以这样使用my在 freemarker里被称作 namespacecompress语法.用来压缩空白空间和空白的行用例(1 2 3 4 5 $mootest onlyI said, test only) 输出(1 2 3 4 5mootest onlyI said, test only) escap
6、e, noescape语法.用例主要使用在相似的字符串变量输出,比如某一个模块的所有字符串输出都必须是 html安全的,这个时候就可以使用该表达式First name: $firstNameLast name: $lastNameMaiden name: $maidenName相同表达式 First name: $firstName?htmlLast name: $lastName Maiden name: $maidenName?htmlassign语法orororcapture thisorcapture this用例生成变量,并且给变量赋值给 seasons赋予序列值给变量 test加
7、1给 my namespage 赋予一个变量 bgColor,下面可以通过 my.bgColor来访问这个变量将一段输出的文本作为变量保存在 x里下面的阴影部分输出的文本将被赋值给 x$n Number of words: $x?word_list?size$xHello $user! errortrue同时也支持中文赋值,如:java$语法打印输出:javaglobal语法ororcapture this全局赋值语法,利用这个语法给变量赋值,那么这个变量在所有的 namespace中是可见的,如果这个变量被当前的 assign语法覆盖 如 在当前页面里 x=2将被隐藏,或者通过$.globa
8、l.x来访问setting语法用来设置整个系统的一个环境localenumber_formatboolean_formatdate_format, time_format, datetime_formattime_zoneclassic_compatible用例假如当前是匈牙利的设置,然后修改成美国$1.2$1.2 输出1,21.2因为匈牙利是采用“,”作为十进制的分隔符,美国是用“.”macro, nested, return语法.用例Test text, and the params: $foo, $bar, $baaz输出 Test text, and the params: a, b,
9、 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输出结果 Animals: Mouse Elephant Python包含 body的宏 $c. $halfc Last!输出1. 0.52. 13. 1.54. 2 Last! t, lt, rt语法去掉左右空白和回车换行去掉左边空白和回车换行去掉右边空白和回车换行取消上面的效果3一些常用方法或注
10、意事项表达式转换类$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也可以直接$m
11、ouse?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