7.16,杭州。阿里百川无线开放大会。阿里与开发者一起见证移动的力量
FreeMarker 2.3.23 RC1 发布,最终版本计划 7 月 5 日发布!
值得关注的改进 (完整文档请看 这里 ):
Listing-related ( #list ) specialized convenience features that target some of the most typical tasks in templates:
New #list directive child directives, #else and #items deal with the special cases with 0-length lists. #sep makes inserting separators between items much easier than it was with if + var _has_next .
New built-ins that act on loop variables: var ?index (deprecates var _index ), var ?counter (1-based index), var ?has_next (deprecates var _has_next ), var ?item_parity (returns "odd" or "even" ), var ?item_cycle("lightRow", "darkRow") , and some more.
Convenience assignment operators, like in <#assign counter++> and <#assign counter += 2>
True ternary operator equivalent: someBoolean ?then( whenTrue , whenFalse )
Switch as expression: someValue ?switch( case1 , result1 , case2 , result2 , ... caseN , resultN , defaultResult )
FTL now supports camel case for the identifiers that are part of the template language. For example, <#noEscape>${x?upperCase}</#noEscape> or <#setting numberFormat="0.0"> or <#ftl stripText=true> are valid. You can just start using camel case without configuring anything, however, within the same template, FreeMarker will require you to use the same naming convention for all identifiers that are part of the template language. (Also, a certain naming convention can be enforced for all templates from configuration.)
更多 FreemarkerServlet 配置模板加载,现在可以从 Servlet 3.0 META-INF/resources 加载
各种 bug 修复
FreeMarker 2.3.23-rc01 下载 (Binary-only for Google App Engine is here... )
FreeMarker是一个模板引擎,一个基于模板生成文本输出的通用工具,使用纯Java编写
FreeMarker被设计用来生成HTML Web页面,特别是基于MVC模式的应用程序
虽然FreeMarker具有一些编程的能力,但通常由Java程序准备要显示的数据,由FreeMarker生成页面,通过模板显示准备的数据(如下图)
FreeMarker不是一个Web应用框架,而适合作为Web应用框架一个组件
FreeMarker与容器无关,因为它并不知道HTTP或Servlet;FreeMarker同样可以应用于非Web应用程序环境
FreeMarker更适合作为Model2框架(如Struts)的视图组件,你也可以在模板中使用JSP标记库
FreeMarker是免费的
而且你还可以通过Eclipse的插件来编辑FreeMarker,经过验证,FreeMarker 最好的 Eclipse 编辑插件是JBoss Tools。
FreeMarker 特性
1 、通用目标
能够生成各种文本: HTML 、 XML 、 RTF 、 Java 源代码等等
易于嵌入到你的产品中:轻量级;不需要 Servlet 环境
插件式模板载入器:可以从任何源载入模板,如本地文件、数据库等等
你可以按你所需生成文本:保存到本地文件;作为 Email 发送;从 Web 应用程序发送它返回给 Web 浏览器
2 、强大的模板语言
所有常用的指令: include 、 if/elseif/else 、循环结构
在模板中创建和改变变量
几乎在任何地方都可以使用复杂表达式来指定值
命名的宏,可以具有位置参数和嵌套内容
名字空间有助于建立和维护可重用的宏库,或者将一个大工程分成模块,而不必担心名字冲突
输出转换块:在嵌套模板片段生成输出时,转换 HTML 转义、压缩、语法高亮等等;你可以定义自己的转换
3 、通用数据模型
FreeMarker 不是直接反射到 Java 对象, Java 对象通过插件式对象封装,以变量方式在模板中显示
你可以使用抽象(接口)方式表示对象( JavaBean 、 XML 文档、 SQL 查询结果集等等),告诉模板开发者使用方法,使其不受技术细节的打扰
4 、为 Web 准备
在模板语言中内建处理典型 Web 相关任务(如 HTML 转义)的结构
能够集成到 Model2 Web 应用框架中作为 JSP 的替代
支持 JSP 标记库
为 MVC 模式设计:分离可视化设计和应用程序逻辑;分离页面设计员和程序员
5 、智能的国际化和本地化
字符集智能化(内部使用 UNICODE )
数字格式本地化敏感
日期和时间格式本地化敏感
非 US 字符集可以用作标识(如变量名)
多种不同语言的相同模板
6 、强大的 XML 处理能力
<#recurse> 和 <#visit> 指令( 2.3 版本)用于递归遍历 XML 树
在模板中清楚和直觉的访问 XML 对象模型
开源论坛JForum 就是使用了 FreeMarker 做为页面模板。
Javadoc: http://www.ostools.net/apidocs/apidoc?api=freemarker