在Freemarker中使用时,如果我只是引用变量,则可以使用,但是在使用?eval时,我得到的是null或丢失的错误。

这有效并且newOwnerName获取输入值

<#assign newOwnerName = jsonEventData.newOwnerName>

但这不起作用,并导致异常:

<#assign newOwnerName = jsonEventData.newOwnerName?eval>

例外:

The following has evaluated to null or missing: jsonEventData.newOwnerName?eval

我尝试使用?eval的原因是因为输出中包含引号:新的所有者名称为“ Peter”。但我希望它不要使用引号:新的所有者名称是Peter

FTL模板类似于:

<#assign newOwnerName = jsonEventData.newOwnerName>
The new owner name is ${newOwnerName}


我希望?eval不会导致null或丢失错误,因为值是在输入中发送的

最佳答案

您不能?eval字符串值,而在其内容中不能包含引号。 Peter不是Freemarker变量。如果您的Java输入偶尔有引号或没有引号,则会出现此错误。一个更干净的解决方案是在Java端检测并删除引号(子字符串)。

10-07 16:31