问题:前端使用freemarker框架,java后端传一个集合到前端(集合中有日期类型的字符串)显示日期时无法识别并报错:
1,前端代码:
<@fm.dataBar>
<@fm.datagrid id="dataGrid">
<thead>
<tr><th>留言时间</th></tr>
</thead>
<tbody>
<#if datalist??>
<#list datalist as dataItem>
<tr>
<td>${dataItem.addtime}</td>
</#list>
</#if>
</tbody>
</@fm.datagrid>
</@fm.dataBar>
2,报错截图:
3,问题的原因:freemarker框架内分装了自己的格式,如果不按格式写框架将无法识别
4,具体分析:如果不需和格式模式使用 ?date
, ?time
或 ?datetime
, 比如 "yyyy.MM.dd HH:mm"
,因为使用这些模式, 就告诉 FreeMarker 来显示哪部分日期。那么,FreeMarker 将盲目地相信你, 如果你显示的部分不存在于变量中,则可以显示"干扰"。例如, ${openingTime?string["yyyy-MM-dd hh:mm:ss a"]}
, 而 openingTime
中只存储了时间,将会显示 1970-01-01 09:24:44 PM
。
5,详情分析参考链接:http://freemarker.foofun.cn/ref_builtins_date.html
6,解决办法(给定格式让框架可以解析即可):
7,效果图