FreeMarker使用Java新版日期API

0

FreeMarker使用新版Java的事件API不能正确的格式化输出,需要添加下面配置才可以。

this.configuration.setObjectWrapper(new DefaultObjectWrapper(freemarker.template.Configuration.VERSION_2_3_31) {
	@Override
	public TemplateModel wrap(Object object) throws TemplateModelException {
		if(object instanceof LocalDateTime localDateTime) {
			return new SimpleDate(Timestamp.valueOf(localDateTime));
		} else if(object instanceof LocalDate localDate) {
			return new SimpleDate(Date.valueOf(localDate));
		}else if(object instanceof LocalTime localTime) {
			return new SimpleDate(Time.valueOf(localTime));
		}
		return super.wrap(object);
	}
});

也可以使用freemarker-java8依赖解决。