2.3.7

Page Contents

发布日期:2006-06-23

与 2.3.7 RC1 相比,此版本包含新的运算符,用于处理 null/missing 变量,内置substring以及更多错误修正。请注意,2.3.7 RC1 的更改日志很长,因此您可能也想read that

Java 方面的更改

  • 内置seq_contains现在也可以处理TemplateCollectionModel -s。

  • 错误修正:在 2.3.7 RC1 中,FreemarkerServlet在初始化期间始终与NullPointerException一起消失。

FTL 方面的更改

  • 3 添加了新的运算符,用于缺少变量的处理。这些运算符使defaultexistsif_exists内置插件被弃用。 (当您使用已弃用的内置程序时,解析器不会发出任何警告消息,并且它们仍在工作.):

  • exp1!exp2exp1?default(exp2)几乎相等,(exp1)!exp2也与(exp1)?default(exp2)几乎相等。唯一的区别是,当不需要默认值时,此新运算符不会评估exp2

    • exp1!exp1?if_exists类似,也(exp1)!(exp1)?if_exists类似。不同之处在于,使用此新运算符时,默认值是一个空字符串,一个空列表和一个空哈希(同时使用多类型变量),而使用if_exists时,默认值是一个空字符串,一个空列表和空哈希和布尔值false以及不执行任何操作并同时忽略所有参数的转换。

    • exp1??exp1?exists等效,(exp1)??也与(exp1)?exists等效。

  • 新内置的:exp?substring(from, toExclusive),也可以称为exp?substring(from)。像myString[from..toInclusive]myString[from..]这样的很长一段时间都可以获取子字符串,但是myString?substring(from, toExclusive)myString?substring(from)的优势在于它具有专用端,这更加实用。 (编辑:由于 2.3.21 范围再次是首选方法,因为它具有myString[from..<toExclusive].)序列(列表)切片仍然必须使用旧语法,因为substring仅适用于字符串。请注意,此新内置参数的“ to”参数大 1,因为它是排它索引。进一步的区别是内置substring要求“ from”索引小于或等于“ to”索引。因此,现在可以使用 0 个长度的子字符串,但不能反向子字符串。

  • 错误修正:recover指令没有嵌套内容时[1487694]故障