我成功地将Spring 3日期格式化程序与Thymeleaf集成,并且$ {{date}}按预期格式化 - 这太棒了!
在Spring Web Application Context之外使用FileTemplateResolver处理模板时出现问题。我们使用FileTemplateResolver处理模板并返回HTML代码,以便我们可以在不启动应用程序本身的情况下对其进行验证 - 使测试过程更加快速和简单。
因此,在使用PagePreview
处理以下片段时<time data-th-datetime="${{createdOn}}" datetime="2013-04-06T13:53">now</time>
它呈现为
<time datetime="Fri Jan 10 09:02:31 GMT 2014">Fri Jan 10 09:02:31 GMT 2014</time>
哪个HTML5无效。使用Thymeleaf + Spring 3渲染时工作正常:
<time datetime="2014-01-10T09:02">2014-01-10T09:02</time>
这是我们用于处理没有Web应用程序上下文的模板的代码:
public final class PagePreview {
private static final IWebContext emptyContext = new FakeWebContext();
private static final String templateBaseFolder = "src/main/webapp/WEB-INF/thymeleaf-templates/";
private static final TemplateEngine templateEngine = initialiseTemplateEngine();
private static TemplateEngine initialiseTemplateEngine() {
FileTemplateResolver templateResolver = new FileTemplateResolver();
templateResolver.setPrefix(templateBaseFolder);
templateResolver.setSuffix(".html");
templateResolver.setTemplateMode("LEGACYHTML5");
templateResolver.setHtml5TemplateModePatterns(Sets.newHashSet("*.html"));
TemplateEngine engine = new TemplateEngine();
engine.setTemplateResolver(templateResolver);
engine.initialize();
return engine;
}
public static String previewTemplateWithData(String templateName, Data data) {
Context ctx = new FakeWebContext();
ctx.setVariables(data.toMap());
return templateEngine.process(templateName, ctx);
}
public static String previewTemplateOnly(String templateName) {
return templateEngine.process(templateName, emptyContext);
}
}
任何想法如何为Date对象设置默认格式化程序?