Freemarker - 可能缺失或空白的变量的默认值?

时间:2016-05-04 19:04:20

标签: freemarker trim default-value

在Freemarker中,我想处理可能缺少的内容(未在给定对象或给定Map中定义),具有null值,为空字符串""或仅包含空格(" \t\n"),AKA空字符串的字符串。或者是真实的价值,例如"foo"

如果它是除非空字符串之外的任何内容,我希望表达式返回默认值。

我如何在Freemarker中处理这个问题?

到目前为止,这是我使用的:

${ obj.propery???then(obj.property?trim!"default") }

但我可以想象一些更优雅的东西,比如

${ obj.property!!?trim!"default" }

甚至修剪(这是模板的常见操作):

${ obj.property!!!"default" }

Freemarker中有这样的东西吗? (除了编写我自己的方法或宏。)

2 个答案:

答案 0 :(得分:1)

FreeMarker中没有任何内容,至少在2.3.24中没有。我认为解决问题的最佳方法是使用trimToNull函数,然后您可以编写trimToNull(obj.property)!"default"trimToNull(obj.property)??等。

答案 1 :(得分:0)

我遇到了同样的挑战,来到了这个解决方案:

${ (obj.property!"")?trim }

它也修剪空字符串,但是比编写函数或if更容易阅读。