Controller中,回填到模板的的一个数据类型是Calendar,在前端显示的时候,直接显示会报错,比如模板中这样写${submitDate},会出现如下的错误:

java.util.GregorianCalendar[time=-2209017600000,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=java.util.SimpleTimeZone[id=,offset=28800000,dstSavings=3600000,useDaylight=false,startYear=0,startMode=0,startMonth=0,startDay=0,startDayOfWeek=0,startTime=0,startTimeMode=0,endMode=0,endMonth=0,endDay=0,endDayOfWeek=0,endTime=0,endTimeMode=0],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=1900,MONTH=0,WEEK_OF_YEAR=1,WEEK_OF_MONTH=1,DAY_OF_MONTH=1,DAY_OF_YEAR=1,DAY_OF_WEEK=2,DAY_OF_WEEK_IN_MONTH=1,AM_PM=0,HOUR=0,HOUR_OF_DAY=0,MINUTE=0,SECOND=0,MILLISECOND=0,ZONE_OFFSET=28800000,DST_OFFSET=0]

这么一个简单的问题,搜遍全网,竟然没有答案。复杂点的方法,就是在Controller中实现一个转换方法,然后在FreeMarker模板中调用该方法。

后来有搞了很久,其实解决的方法很简单:

${submitDate.time?string["yyyy-MM-dd HH:mm:ss"]}

希望能帮到被同样问题困惑的人。