【问题标题】:Spring Boot templates not resolvedSpring Boot 模板未解析
【发布时间】: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 中的资源来包含它,但视图仍未解析。

【问题讨论】:

    标签: spring maven thymeleaf spring-boot


    【解决方案1】:

    您是否尝试过完全删除 WEB-INF 文件夹并按照this 指南中所做的那样将所有内容粘贴到资源中?

    【讨论】:

    • 工作正常,谢谢!我在访问静态内容时遇到了一些问题,但如果我找不到解决方案,我会回复。
    • 我在尝试使用模板时访问静态内容时遇到了同样的问题。你找到解决办法了吗?
    • 如果这里的答案不符合您的需要,您可能应该创建一个新问题来描述您的问题
    • 这与其说是解决方案,不如说是一种变通方法。我觉得您应该能够为您的模板指定路径,否则设置前缀将毫无意义。
    • @PedroHoehlCarvalho 这不是解决方法。这正是部署 uber-jar 时 Spring Boot 的工作方式。如果有人想放弃 Spring Boot 的约定,欢迎他们。这很容易做到!
    猜你喜欢
    • 2020-03-14
    • 2019-05-02
    • 2019-11-29
    • 2016-01-27
    • 1970-01-01
    • 1970-01-01
    • 2021-09-25
    • 2018-11-30
    • 2019-08-14
    相关资源
    最近更新 更多