我们使用Freemarker 2.3.20并遇到一种奇怪的行为,当使用默认运算符和字符串转义时这样:
${picture.@author[0]!""?js_string}
在这种情况下,如果存在!“”,则不会转义作者值中的引号。
我们需要先检查值,然后不能使用默认的op:
<#if picture.@author[0]??>${picture.@author[0]?js_string}</#if>
这是非常丑陋和破旧的代码。
这是一个错误还是一个功能?
答案 0 :(得分:2)
这是因为运营商的优先权。 ${picture.@author[0]!""?js_string}
表示${picture.@author[0]!(""?js_string)}
。你想要的是${(picture.@author[0]!"")?js_string}
。