And*_*ndy 3 datetime freemarker jodatime
有没有办法在Freemarker中轻松格式化Joda DateTime对象?例如,使用Java日期,我们可以使用?字符串和其他指令.
我知道我可以调用Date并获得Java Date,但我希望有更好的方法.
您应该可以toString(String pattern)直接从Freemarker 调用该方法:
${dateTime.toString('MM-dd-yy')}
(未测试)
如果您不想在toString('MM-dd-yy')整个模板上泼溅,那么甚至可以采用更简单的方法.
只需扩展Freemarker DefaultObjectWrapper,即可开箱即用了解Joda Time:
public class JodaAwareObjectWrapper extends DefaultObjectWrapper {
@Override
public TemplateModel wrap(final Object obj) throws TemplateModelException {
if (obj == null) { return super.wrap(obj); }
if (obj instanceof LocalDate) { return new SimpleDate(((LocalDate) obj).toDate(), TemplateDateModel.DATE); }
// add support for all desired types here...
return super.wrap(obj);
}
}
Run Code Online (Sandbox Code Playgroud)
当您启动FreeMarker引擎时,将此对象包装器提供给FreeMarker配置
Configuration config = // ...
config.setObjectWrapper(new JodaAwareObjectWrapper());
Run Code Online (Sandbox Code Playgroud)
然后,您可以使用FreeMarkers标准日期内置插件,例如${dateTime?date}在模板中