我正在尝试从Iterable<Object>
个实例的集合中构建HTML表。
final Iterable<Iterable<Object>> rows = Lists.newArrayList(
Lists.newArrayList( 1, "Fizz"),
Lists.newArrayList( 2, "Buzz"),
Lists.newArrayList( 3, null ));
这是使用&#34;行&#34;。
的键添加到我的模型中在我的模板文件中,我有以下标记:
<#list rows as row>
<tr>
<#list row as value>
<td>${value!}</td>
</#list>
</tr>
</#list>
当我尝试打印出这些值时,模板会处理最后一行的null
值:
freemarker.core._TemplateModelException:FreeMarker值存在,但内部没有任何内容; TemplateModel对象(类:freemarker.ext.beans.StringModel)返回null而不是String。这可能是构建数据模型的非FreeMarker代码中的错误。
The blamed expression:
==> value!
我已尝试将${value!}
替换为${value?has_content}
并在块周围尝试了一些其他组合<#if value??>
,但我仍然遇到同样的错误。
如何让我的Freemarker模板接受这些null
值并生成一个空字符串?
答案 0 :(得分:0)
您的value
对象很可能以toString()方法的形式返回null。
答案 1 :(得分:0)
这应该有效:
${value!""}
答案 2 :(得分:-1)
你可以用??测试操作员:
检查对象的属性是否为null:
&lt; #if object.attribute ??&gt;
检查对象或属性是否为空:
&lt; #if(object.attribute)??&gt;
来源:FreeMarker手册