如何在 freemarker 中评估 if 语句?
Posted
技术标签:
【中文标题】如何在 freemarker 中评估 if 语句?【英文标题】:How is if statement evaluated in freemarker? 【发布时间】:2013-11-04 16:02:10 【问题描述】:我试图了解 freemarker 如何评估具有多个条件的 if 语句,例如:
<#if person?? && person.phone?has_content && person.phone != "11">
do something
</#if>
如果是人??返回 false freemarker 是否仍会评估语句的其余部分,还是只会为整个语句返回 false?我试图弄清楚 person.phone 是否为 null 当它试图评估 if 语句中的最后一个条件时,这个 if 语句会抛出错误吗?我试图让它尽可能干净,而不是嵌套一堆 if 语句。
谢谢!
【问题讨论】:
似乎很容易测试,不是吗? 顺便说一句,person?? && person.phone?has_content
与 person.phone?has_content
相同。
【参考方案1】:
在 Java 中,逻辑运算符 &&
和 ||
短路,这意味着如果不需要,它们不会在运算符之后计算任何内容。
在您给出的示例中,如果 person
计算结果为 false
,则不会计算其余条件。
This answer provides a good example
另外,this forum thread 的最后一篇文章专门谈到了支持短路逻辑运算符的 freemarker
【讨论】:
虽然它不是 Java,但它们是短路的,就像在 Java 中一样。以上是关于如何在 freemarker 中评估 if 语句?的主要内容,如果未能解决你的问题,请参考以下文章