2.3.11
Page Contents
发布日期:2007-12-04
此版本包含一些性能和可用性方面的改进。
FTL 方面的更改
- 已修正错误:[1687248] 警告!该错误修复程序可能会破坏某些模板! 修复了c built-in(
?c
)的错误,该错误有时会导致整数最后以“ .0”格式化(如:1.0),并导致数字有时格式化为指数形式(如 4E-20)。从现在开始,整数将永远不会使用小数点(即使包装的数字是double
也不会;请记住,模板语言只知道一种数字类型),并且也不会使用指数形式。另外,小数点后的最大位数限制为 16,因此小于 1E-16 的数字将显示为 0.
Java 方面的更改
-
FreeMarker 现在具有更好的 JSP 2.0 和 JSP 2.1 兼容性。最值得注意的是,现在支持 JSP 2.0
SimpleTag
接口。另外,即使在没有自己的 JSP 实现的环境中运行,当 JSP 2.0 API JAR 在 Classpath 中可用时,FreeMarker JSP 运行时也将向标记提供其自己的JspFactory
和JspEngineInfo
的实现,以及JspApplicationContext
当 classpath 中有 JSP 2.1 API JAR 可用时。 -
与
TemplateTransformModel
以前相比,新的模型接口TemplateDirectiveModel
为实现用户定义的指令提供了更简单的范例。TemplateTransformModel
将被弃用。 -
FreeMarker 现在发现 Sun JRE/JDK 5 和 6 中包含基于 Xalan 的 XPath 支持,因此不需要单独的 Xalan jar 即可运行 XPath 支持。 (但是,我们建议在 Xalan 上使用 Jaxen,因为 FreeMarker XPath 的支持更加完善.当然,仍然需要 Jaxen jar.)
-
通过消除重复执行各种类测试,
BeansWrapper
的包装性能已得到显着提高。
针对BeansWrapper
自定义程序的注意事项: 以前覆盖getInstance(Object, ModelFactory)
方法的BeansWrapper
的子类现在应改为覆盖getModelFactory(Class)
,以利用此改进。覆盖旧方法仍然有效,但是不会利用性能改进。
-
减少了由
BeansWrapper
创建的包装器的内存占用量(减小了一个默认大小的HashMap
的大小),直到在其上访问方法或索引属性(可以在不增加内存占用量的情况下访问简单属性)为止。 -
遵循这些类型的 JavaScript 转换语义,Rhino 对象可以在模板中用作标量,数字和布尔值。
-
.data_model
现在是TemplatHashModelEx
(如果可能)。这意味着通常可以使用.data_model?keys
获得数据模型变量名称的列表。 -
FileTemplateLoader
现在可以选择允许以下指向基本目录之外的符号链接。为了向后兼容,默认情况下禁用它。 -
错误修复:[1670887]
TaglibFactory
taglib 匹配未遵循 JSP 1.2 FCS。 -
错误修复:[1754320]
setXPathSupportClass
中的错误阻止插入用户提供的XPathSupport
实现。 -
错误修正:[1803298]使用循环变量解析宏时解析器错误
-
已修复的错误:[1824122]从 JAR 文件中加载模板可能导致文件句柄泄漏(由于 Sun 的 Java API 实现中的错误)。
-
漏洞修复:现在,如果重新加载修改后的模板文件失败,将从缓存中删除缓存的模板,因此不会提供任何已过期的模板。
Documentation changes
-
在《模板作者指南》(以前称为《设计指南》)中,尤其是在《入门指南》部分中,进行了大量的重新制作。
-
从现在开始,
#{...}
被记录为默认构造。 -
现在,“转换”一词已从文档中删除。取而代之的是使用更通用的“用户定义的指令”术语,该术语包含宏
TemplateTransformModel
-s 和新的TemplateDirectiveModel
-s,这是实现用户定义的指令的不同方法。 -
手册中还有一些小的改进。