Camel-FreeMarker 2.25.2 中的交换为空或缺失

Null or missing exchange in Camel-FreeMarker 2.25.2

我注意到 Camel-FreeMarker 2.25.2 版中有一个奇怪的行为,我想知道这是否是库中的错误。版本 2.25.1 或其他 2.xx.x 版本不会发生这种情况。

单元测试时出现以下错误:

SEVERE: Error executing FreeMarker template
FreeMarker template error:
The following has evaluated to null or missing:
==> exchange  [in template "email.ftl" at line 5, column 55]

模板 email.ftl 包含:

"${exchange.properties.CamelExceptionCaught.message}"

根据 Camel-FreeMarker documentation,“exchange”和“exchange.properties”应该是模板中的有效标识符。

目前,我的解决方案是使用 2.25.1 版本而不是 2.25.2,但我想知道是否有其他解决方案。

出于安全考虑,这在所有 Apache Camel 模板组件的 2.25.23.4.0CAMEL-15050 中默认禁用。要启用较旧的行为,您可以使用选项 allowContextMapAll=true.

参见Camel Freemarker 2.25.x docs

allowContextMapAll - Sets whether the context map should allow access to all details. By default only the message body and headers can be accessed. This option can be enabled for full access to the current Exchange and CamelContext. Doing so impose a potential security risk as this opens access to the full power of CamelContext API.