FileTemplateResolver的Thymeleaf日期格式化程序

时间:2014-01-10 09:47:37

标签: unit-testing thymeleaf

我成功地将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对象设置默认格式化程序?

0 个答案:

没有答案