【问题标题】:What does the ! (exclamation point) in FreeMarker do?是什么! (感叹号)在 FreeMarker 中做什么?
【发布时间】:2020-05-03 22:54:02
【问题描述】:

我一直在 Magnolia code examples 的 FreeMarker 代码末尾看到感叹号。例如:

${content.header!}

感叹号叫什么,有什么作用?

【问题讨论】:

标签: freemarker magnolia


【解决方案1】:

感叹号称为default value operator。它用于在插值 (${...}) 返回 null 时设置默认值。如果没有设置默认值,则返回一个空字符串("")。

${content.header!}
<#-- Returns "" if content.header is null -->

${content.header!"Example Header"}
<#-- Returns "Example Header" if content.header is null -->

请参阅Dealing with missing variables 了解更多信息。

【讨论】:

  • 错了。如果变量为 null 并且您尝试在不通过感叹句语法提供默认值的情况下打印它,freemarker 将打印错误。请参阅freemarker.apache.org/docs/…freemarker.apache.org/docs/app_faq.html#faq_null 了解更多信息。
  • @Jan 我在 FreeMarker 文档上看到了这个:“如果省略默认值,那么它将同时是空字符串、空序列和空哈希。” freemarker.apache.org/docs/…。我已经多次使用默认值运算符而没有默认值,并且从未见过任何错误。我错过了什么吗?
  • 我想我在阅读上面的声明时太快了。我读的是“如果没有设置 [属性] 的值,它将返回空字符串”,这是错误的。但是您所指的是感叹号后的“默认值”,确实可以省略,默认为空字符串。我很抱歉。
  • @Jan 不需要道歉。我们都会在某个时候草草得出结论。我很高兴在 Stack Overflow 上与您互动,期待未来的交流。
猜你喜欢
  • 1970-01-01
  • 2011-01-11
  • 2011-12-22
  • 2018-11-14
  • 1970-01-01
  • 1970-01-01
  • 2021-09-18
  • 1970-01-01
  • 2023-03-06
相关资源
最近更新 更多