之间的区别 ,free_marker中的has_content,if_exists

以下在freemarker中有什么区别?

! has_content ?? if_exists 

我用了 ?? 而不是has_content&它导致如此巨大的问题。 搞砸了我的一天。 我真的需要弄清楚这个事情。

当我使用

 !(xyz.abc!)?? -- it dint work 

当我使用

 !(xyz.abc!)?has_content ... it did work 

不? OR has_content或if_exists检查相同的事情?

?? 告诉左手操作数的值是否丢失(意味着它是Java null或者您有一个未定义的variables),并相应地返回false (missing)或true (not missing)。

?has_content非常像?? ,除了它也为空string或空列表或空映射返回false 。 (它不会返回0 ,布尔值false等)

! 是用来给一个默认值,当一个值丢失,如color!"no color" 。 如果你省略了右手操作数! ,那么默认值是空string和空序列,同时是空的哈希。

?if_exists是旧的写作方式?? 。 不要使用它。