在Freemarker中,我想处理可能缺少的内容(未在给定对象或给定Map
中定义),具有null
值,为空字符串""
或仅包含空格(" \t\n"
),AKA空字符串的字符串。或者是真实的价值,例如"foo"
。
如果它是除非空字符串之外的任何内容,我希望表达式返回默认值。
我如何在Freemarker中处理这个问题?
到目前为止,这是我使用的:
${ obj.propery???then(obj.property?trim!"default") }
但我可以想象一些更优雅的东西,比如
${ obj.property!!?trim!"default" }
甚至修剪(这是模板的常见操作):
${ obj.property!!!"default" }
Freemarker中有这样的东西吗? (除了编写我自己的方法或宏。)
答案 0 :(得分:1)
FreeMarker中没有任何内容,至少在2.3.24中没有。我认为解决问题的最佳方法是使用trimToNull
函数,然后您可以编写trimToNull(obj.property)!"default"
和trimToNull(obj.property)??
等。
答案 1 :(得分:0)
我遇到了同样的挑战,来到了这个解决方案:
${ (obj.property!"")?trim }
它也修剪空字符串,但是比编写函数或if更容易阅读。