spring-mvc - Spring Thymeleaf View 的正确位置

标签 spring-mvc thymeleaf spring-boot

我正在使用 Thymeleaf 运行 Spring Boot 应用程序。当我通过我的 IDE (IntelliJ) 运行应用程序时,一切运行良好。 但是,当我通过命令行 (java -jar) 运行应用程序时, View 无法解析,并且出现以下错误:

org.thymeleaf.exceptions.TemplateInputException: Error resolving template "index", template might not exist or might not be accessible by any of the configured Template Resolvers
    at org.thymeleaf.TemplateRepository.getTemplate(TemplateRepository.java:245)
    at org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1104)
    at org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1060)
    at org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1011)
    at org.thymeleaf.spring3.view.ThymeleafView.renderFragment(ThymeleafView.java:335)
    at org.thymeleaf.spring3.view.ThymeleafView.render(ThymeleafView.java:190)
    at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1225)
    at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1012)
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:959)

这是我的设置:

我的目录结构

PROJECT-ROOT
  --src
    --main
      --java
        --controllers
          --[CLASS WITH MAIN METHOD]
        --views
          --index.html

我的模板解析器:

@Bean
  public ViewResolver viewResolver() {
    ClassLoaderTemplateResolver templateResolver = new ClassLoaderTemplateResolver();
    templateResolver.setTemplateMode("XHTML");
    templateResolver.setPrefix("views/");
    templateResolver.setSuffix(".html");
    SpringTemplateEngine engine = new SpringTemplateEngine();
    engine.setTemplateResolver(templateResolver);

    ThymeleafViewResolver viewResolver = new ThymeleafViewResolver();
    viewResolver.setTemplateEngine(engine);
    return viewResolver;
  }

我应该将 View 放在哪里,以便从 jar 文件运行时可以正确解析它们?

最佳答案

我认为答案取决于您的构建配置。目录“src/main/views”不是任何常用构建工具的标准资源位置,因此您必须将其显式添加到用于构建 jar 的工具的配置中。

如果我是你,我会顺其自然(为什么不一样?),只使用“src/main/resources”作为类路径资源。我也会完全省略 thymeleaf 配置,让 Spring Boot 处理它,将我的模板放在“src/main/resources/templates”中。

关于spring-mvc - Spring Thymeleaf View 的正确位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22884299/

相关文章:

java - 需要重启tomcat以进行html更改

spring-boot - 更正应用程序的类路径,使其包含 org.elasticsearch.common.logging.Loggers 的单个兼容版本

java - 如何在使用 maven 构建的 spring boot 2 java 应用程序中使用 groovy 解释(带有 spring-aop 注释)?

java - 比较方法在使用 Spring Rest Template 时违反了它的一般契约

java - Spring以编程方式注册RequestMapping

unit-testing - Spring REST 离线测试

java - Spring Ajax Controller - 接受提交而不刷新页面

java - Thymeleaf + Spring 表单 - 如何从 Controller 加载持久选择框值以查看?

http - 如何将自定义 HTTP 请求 header 添加到 Thymeleaf 生成的表单或链接?

java - 无法 Autowiring 。找不到 'MessagingPropertiesRefactor' 类型的 bean