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 添加了新的运算符,用于缺少变量的处理。这些运算符使
default
,exists
和if_exists
内置插件被弃用。 (当您使用已弃用的内置程序时,解析器不会发出任何警告消息,并且它们仍在工作.): -
exp1!exp2
与exp1?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]故障