freemarker 中以下内容有什么区别?
!
has_content
??
if_exists
我用过??而不是 has_content & 它会导致如此巨大的问题。搞砸了我的一天。我真的需要澄清这件事。
当我使用时
!(xyz.abc!)?? -- it dint work
当我使用时
!(xyz.abc!)?has_content ... it did work
不是吗??或 has_content 或 if_exists 检查相同的事情?
最佳答案
??
告诉左侧操作数的值是否丢失(意味着它是 Java null
或者那里有一个 undefined variable ),并返回 false
(缺失)或true
(没有缺失)相应地。
?has_content
非常像 ??
,除了它还返回 false
对于 0 长度字符串或空 FTL 序列(如 java.util.List
、Java 数组等)或空 FTL 哈希(如 java.util.Map
等)。 (对于 false
、 bool 值 0
等,它不会返回 false
等)
!
用于在缺少值时给出默认值(同样意味着它是 Java null
或者您有 undefined variable ),例如 color!"no color"
。如果省略 !
的右侧操作数,那么默认值同时是一个空字符串、空序列和空哈希(多类型值),这对于编写像 <#list things! as thing>
这样的东西很方便, ${foo!}
.
?if_exists
是旧的写法??
。不要使用它。
当我们在这里时,请注意所有这些运算符仅涵盖点或 []
的最后一步。表达式,如user.price!0
仅处理 if price
user
中缺失,但如果user
则不然本身失踪了。要涵盖这两种可能性,请使用 (user.price)!0
,它处理 ()
评估期间抛出的所有缺失变量错误。 ,无论他们来自哪里。
关于freemarker - 之间的区别?? freemarker 中的 、 has_content 、 if_exists,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23552151/