我试图了解freemarker如何评估具有多个条件的if语句,例如:
<#if person?? && person.phone?has_content && person.phone != "11">
do something
</#if>
如果有人?如果返回false,freemarker仍然会评估语句的其余部分,还是只返回整个语句的false?我试图弄清楚person.phone是否为null这个if语句在尝试评估if语句中的最后一个条件时会抛出错误吗?我试图让它尽可能干净,而不必嵌套一堆if语句。
谢谢!
答案 0 :(得分:2)
在Java中,逻辑运算符&&
和||
短路,这意味着如果运算符不需要,它们就不会对运算符进行任何计算。
在您person
评估为false
时给出的示例中,将不会评估其余条件。
This answer provides a good example
此外,this forum thread中的最后一篇文章特别针对支持短路逻辑运算符的freemarker