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 运行时也将向标记提供其自己的JspFactoryJspEngineInfo的实现,以及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,这是实现用户定义的指令的不同方法。

  • 手册中还有一些小的改进。