JHipster webTemplateResolver寻找/WEB-INF/templates/error.html jar包含/WEB-INF/classes/templates/error.html

时间:2014-07-26 01:14:57

标签: thymeleaf jhipster

我刚刚使用最新版本的generator-jhipster构建了我的应用程序。在我做了一些更改之前,事情很棒,导致服务器想要生成错误页面。不幸的是,开箱即用的配置无法解析error.html模板:

@Bean
@Description("Thymeleaf template resolver serving HTML 5")
public ServletContextTemplateResolver webTemplateResolver() {
    ServletContextTemplateResolver webTemplateResolver = new ServletContextTemplateResolver();
    webTemplateResolver.setPrefix("/WEB-INF/templates/");
    webTemplateResolver.setSuffix(".html");
    webTemplateResolver.setTemplateMode("HTML5");
    webTemplateResolver.setCharacterEncoding(CharEncoding.UTF_8);
    webTemplateResolver.setOrder(2);
    return webTemplateResolver;
}

当部署到tomcat时,我得到了无穷无尽的错误消息列表...... 异常处理模板“错误”:解析模板“错误”时出错,模板可能不存在或任何已配置的模板解析器可能无法访问

这对其他人有用吗? 如果没有,是否应该在src / main / webapp / WEB-INF /目录中生成Thymeleaf模板来克服这个问题?或者,是否应使用不同的ViewResolver配置?

通过将上述内容改为此,实际上解决了问题......

 public ITemplateResolver webTemplateResolver() {
        ClassLoaderTemplateResolver webTemplateResolver = new ClassLoaderTemplateResolver();
        webTemplateResolver.setPrefix("templates/");
        webTemplateResolver.setSuffix(".html");
        webTemplateResolver.setTemplateMode("HTML5");
        webTemplateResolver.setCharacterEncoding(CharEncoding.UTF_8);
        webTemplateResolver.setOrder(2);
        return webTemplateResolver;
    }

所以唯一的问题仍然是这个改变是否应该被推入JHipster,如果是这样的话怎么样?

1 个答案:

答案 0 :(得分:0)

在生成的文件中,resources / templates / error.html中有一个error.html页面。 '资源/模板'是默认的模板目录。我认为您可以通过将文件复制到模板目录来解决它。

两种配置的区别在于:

当您使用ServletContextTemplateResolver时,此处的servlet context表示网络上下文的根目录,它是webapp目录。

如果您将其更改为ClassLoaderTemplateResolver,则此处class loader表示前缀的根目录为class path,那么它就像是资源'和java类,将被编译并复制到WEB-INF/classes