freemarker - 之间的区别?? freemarker 中的 、 has_content 、 if_exists

标签 freemarker

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/

相关文章:

java - 如何: jsp scriptlet equivalent code in freemarker

java - 下拉框 - 从 Spring MVC 模型/上下文到使用 freemarker 的表单

java - Freemarker 将哈希值转换为字符串

java - 在执行 getTemplate ("report.ftl"时遇到 java.lang.NullPointerException )

java - 如何使用 freemarker 循环变量名

java - freemarker 将 ${..} 显示为 html 而不是字符串

html - 如何为动态布局构建 FTL 模板?

javascript - freemarker 与 javascript 集成

freemarker - 在 freemarker 中重复一个字符串 n 次

spring - Spring MVC中的多 View 解析器