Freemarker字符串转义不适用于默认运算符

时间:2014-11-04 13:06:59

标签: freemarker

我们使用Freemarker 2.3.20并遇到一种奇怪的行为,当使用默认运算符和字符串转义时这样:

${picture.@author[0]!""?js_string}

在这种情况下,如果存在!“”,则不会转义作者值中的引号。

我们需要先检查值,然后不能使用默认的op:

<#if picture.@author[0]??>${picture.@author[0]?js_string}</#if>

这是非常丑陋和破旧的代码。

这是一个错误还是一个功能?

1 个答案:

答案 0 :(得分:2)

这是因为运营商的优先权。 ${picture.@author[0]!""?js_string}表示${picture.@author[0]!(""?js_string)}。你想要的是${(picture.@author[0]!"")?js_string}