freemaker中判断值是否为null:
<#if ${flag.a??}> flag.a不为null的处理 <#else> flag.a为null的处理 </#if>
freemaker中判断值是否为"":
<#if ${flag.a!""}> flag.a不为""的处理 <#else> flag.a为""的处理 </#if>
ava代码:
Map<String, Object> flag = new HashMap<>(); Date a = null; flag.put("a", new Date()); flag.put("b", a); flag.put("c", "");
freemaker页面代码:
[#if flag.a??] 时间不为空的值:${flag.a?string('yyyy-MM-dd')} [#else] 时间不为空的值:1 [/#if] <br><br> [#if flag.b??] 时间为null的值:${flag.b?string('yyyy-MM-dd')} [#else] 时间为null的值:2 [/#if] <br><br> [#if flag.c?? && flag.c!""] 时间为""的值:${flag.b?string('yyyy-MM-dd')} [#else] 时间为""的值:3 [/#if] <br><br> [#if flag.c??] 时间为""的值:${flag.b?string('yyyy-MM-dd')} [#else] 时间为""的值:3 [/#if]
数据结果
时间不为空的值:2019-01-24 时间为null的值:2 时间为""的值:3 时间为""的值:此处报错,报错信息:
严重: Servlet.service() for servlet [SpringMVC] in context with path [] threw exception [Request processing failed; nested exception is freemarker.core.InvalidReferenceException: The following has evaluated to null or missing:
==> flag.b [in template “bulkxl/classWorkOrder/add.ftl” at line 44, column 19]
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[#else]when-missing[/#if]. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
FTL stack trace ("~" means nesting-related):
- Failed at: ${flag.b?string(“yyyy-MM-dd”)} [in template “bulkxl/classWorkOrder/add.ftl” at line 44, column 17]
----] with root cause