Spring Boot 模板未解析
Posted
技术标签:
【中文标题】Spring Boot 模板未解析【英文标题】:Spring Boot templates not resolved 【发布时间】:2014-05-11 07:15:30 【问题描述】:我正在尝试使用 Spring Boot 和 Thymeleaf 构建一个独立的 Web 应用程序。该应用程序从 IntelliJ IDEA 运行良好,但我无法自行运行 jar。显然不包括模板。
我的项目结构如下:
├── src
│ └── main
│ ├── java
│ │ └── my
│ │ └── domain
│ │ └── application
│ │ ├── domain
│ │ ├── service
│ │ ├── web
│ │ ├── ApplicationConfig.java
│ │ ├── SecurityConfig.java
│ │ ├── ThymeleafConfig.java
│ │ └── WebConfig.java
│ ├── resources
│ │ ├── application.properties
│ │ └── log4j.properties
│ └── webapp
│ ├── resources
│ │ ├── jquery.js
│ │ └── style.css
│ └── WEB-INF
│ └── views
│ ├── layout.html
│ ├── login.html
│ └── menu.html
└── pom.xml
应用配置:
@Bean
public DataSource dataSource()
...
@Bean
public SessionBean sessionBean()
return new SessionBean();
public static void main(String[] args)
SpringApplication.run(ApplicationConfig.class, args);
ThymeleafConfig:
@Bean
public TemplateResolver templateResolver()
ServletContextTemplateResolver templateResolver = new ServletContextTemplateResolver();
templateResolver.setPrefix("/WEB-INF/views/");
templateResolver.setSuffix(".html");
templateResolver.setTemplateMode("HTML5");
return templateResolver;
@Bean
public SpringTemplateEngine templateEngine()
SpringTemplateEngine templateEngine = new SpringTemplateEngine();
templateEngine.setTemplateResolver(templateResolver());
templateEngine.addDialect(new LayoutDialect());
return templateEngine;
@Bean
public ViewResolver viewResolver()
ThymeleafViewResolver viewResolver = new ThymeleafViewResolver() ;
viewResolver.setTemplateEngine(templateEngine());
viewResolver.setOrder(1);
return viewResolver;
网络配置:
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry)
registry.addResourceHandler("/resources/**")
.addResourceLocations("/resources/");
我设法通过将 WEB-INF 文件夹添加为 pom.xml 中的资源来包含它,但视图仍未解析。
【问题讨论】:
【参考方案1】:您是否尝试过完全删除 WEB-INF 文件夹并按照this 指南中所做的那样将所有内容粘贴到资源中?
【讨论】:
工作正常,谢谢!我在访问静态内容时遇到了一些问题,但如果我找不到解决方案,我会回复。 我在尝试使用模板时访问静态内容时遇到了同样的问题。你找到解决办法了吗? 如果这里的答案不符合您的需要,您可能应该创建一个新问题来描述您的问题 这与其说是解决方案,不如说是一种变通方法。我觉得您应该能够为您的模板指定路径,否则设置前缀将毫无意义。 @PedroHoehlCarvalho 这不是解决方法。这正是部署 uber-jar 时 Spring Boot 的工作方式。如果有人想放弃 Spring Boot 的约定,欢迎他们。这很容易做到!以上是关于Spring Boot 模板未解析的主要内容,如果未能解决你的问题,请参考以下文章
Angular 4.0 + Spring boot + Spring Security:TemplateInputException:解析模板“登录”时出错
Spring boot - Thymeleaf 模板 - 多个解析器