我正在尝试使用 freemarker 更改我们的自动化操作之一中的步骤,因为错误是由空值引起的,这可能是预期的。
Topdesk 中的执行日志显示如下:
处理 FreeMarker 模板时出错:以下内容已计算为 null 或缺失: ==> _responses.get_ticket_info.body.object [在模板“action”第 1 行第 82 列]
[...] 提示:如果已知失败的表达式合法地引用有时为 null 或缺失的内容, 可以指定一个默认值,例如 myOptionalVar!myDefault,或者使用 <#if myOptionalVar??>when-present<#else>when-missing。 (这些仅覆盖表达式的最后一步;要覆盖整个表达式,请使用括号:(myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
完整网址如下: ${_variables.topdesk_url?no_esc}/tas/api/assetmgmt/assets?$filter=name%20eq%20'${_responses.get_ticket_info.body.object.name}'
我不确定正确的语法/值...
作为我的条件,我目前有 <#if ${_variables.topdesk_url?no_esc}/tas/api/assetmgmt/assets?$filter=name%20eq%20'${_responses.get_ticket_info.body.object.name}'??>真<#else>假
虽然我猜,因为它说第一个只覆盖了表达式的最后一部分,所以我只需要输入 <#if ${_responses.get_ticket_info.body.object.name}??>true<#else>false
我在第一步中没有创建变量。第一步的结果 (_responses.get_ticket_info.body) 包含变量 object,它有一个变量 name,在本例中其值为“null”。
所以我想跳过步骤 2,以及随后的每个步骤,而不是步骤 2 导致错误并跳过接下来的每个步骤。
您能帮我消除疑问吗?
您可以使用
<#if _responses.get_ticket_info.body.object??>
,正如错误消息所建议的那样。