java之自从更改 SpringBoot 依赖性以来,在空字段上加入时出现 Freemarker 错误
已解决:错误已经存在,我只是假设我最近创建了它...
我有一个使用 SpringMVC 和 Freemarker 的项目。
在我的 Controller 中,我向名为
activities
的模型添加了一个属性,如下所示:
@GetMapping("/activities/{floorId}")
public String activities(Model model, @PathVariable String floorId) {
model.addAttribute("activities", activityService.getActivitiesForFloor(floorId));
return "floor/activities";
}
activities
有一个名为 involvedTiles
的字段,该字段有时为 null
。这很好。
在我的 Freemarker View 中,我像这样使用模型属性:
<#list activities as activity>
<tr>
<td>${activity.id}</td>
<td>${activity.involvedTiles?join(", ")}</td>
</tr>
</#list>
这一直有效(从未出错)。但是现在我突然得到这个错误:
2016-10-21 13:56:17,163 ERROR [http-nio-8080-exec-10] o.a.c.c.C.[.[.[.[dispatcherServlet] [DirectJDKLog.java:181] Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is freemarker.core.InvalidReferenceException: The following has evaluated to null or missing:
==> activity.involvedTiles [in template "floor/activities.ftl" at line 51, column 27]
----
Tip: It's the step after the last dot that caused this error, not those before it.
----
Tip: If the failing expression is known to be legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present#deleted-channelwhen-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----
...etc...
我知道我收到了这个错误,因为 activity.involvedTiles
是 null
并且我尝试将它与 ?join()
功能。但我不明白为什么这突然停止工作。我唯一能想到的是我已经将我的 SpringBoot 依赖项从 1.3.0.RELEASE 更新到 1.4.1.RELEASE。在 SpringBoot 1.3.0 中,他们使用 org.freemarker 2.3.23在 SpringBoot 1.4.1 中,他们使用 org.freemarker 2.3.25-incubating .
我的问题:Freemarker 是否更改了某些内容,这就是我收到此错误的原因吗?
我检查了 site of freemarker 2.3.23和 freemarker 2.3.25但找不到解释此错误的内容。
请您参考如下方法:
?join
从未打算容忍 null
,而且据我所知也没有这样的错误(意外地允许 null
)知道。另外,我已经用 FreeMarker 2.3.21(一个非常旧的版本)尝试过这个,它仍然不允许那里有 null
。
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。