【问题标题】:Thymeleaf, Spring Boot 2: invalid path to resources when handle errorThymeleaf,Spring Boot 2:处理错误时资源路径无效
【发布时间】:2020-05-26 13:55:48
【问题描述】:

我有一个带有默认设置的基本 SpringBoot Thymeleaf 应用程序:

id 'org.springframework.boot' version '2.2.2.RELEASE'
compile("org.springframework.boot:spring-boot-starter-web")
compile("org.springframework.boot:spring-boot-starter-thymeleaf")
compile("nz.net.ultraq.thymeleaf:thymeleaf-layout-dialect")

问题在于处理错误时某些情况下资源路径无效,导致应用无法在页面上显示资源(css/js/image)。

资源路径:/src/main/resources/static/assets

对于记录路径,我创建了RequestInterceptor。它记录请求的 URL 部分。

我描述了 4 个案例。拦截器中的路径和日志:

  1. 调用正确的路径/home - 一切正常
[09:02:48.759][INFO] /home
[09:02:48.759][INFO] /assets/img/java60.png
  1. 调用不正确的路径 /first(预期 404 错误) - 一切正常
[09:02:48.759][INFO] /first
[09:02:48.777][INFO] /error
[09:02:49.589][INFO] /assets/css/simple.css
[09:02:49.590][INFO] /assets/img/notFound.png
[09:02:49.715][INFO] /favicon.ico
  1. 调用不正确的路径/first/second(预期404错误)-意外行为
[09:03:00.390][INFO] /first/second
[09:03:00.395][INFO] /error
[09:03:00.422][INFO] /first/assets/css/simple.css
[09:03:00.422][INFO] /first/assets/img/notFound.png
[09:03:00.426][INFO] /error
[09:03:00.426][INFO] /error
  1. 调用不正确的路径/first/second/third(预期404错误)-意外行为
[09:39:06.404][INFO] /first/second/third
[09:39:06.409][INFO] /error
[09:39:06.441][INFO] /first/second/assets/css/simple.css
[09:39:06.441][INFO] /first/second/assets/img/notFound.png
[09:39:06.446][INFO] /error
[09:39:06.446][INFO] /error

在第三种和第四种情况下,应用重定向到错误并设置路径(请求的 URL + 页面上资产的路径)。为什么spring在3和4情况下使资源路径无效?

完整的源代码可在Github上获得

【问题讨论】:

    标签: spring-boot spring-mvc thymeleaf


    【解决方案1】:

    您必须使用绝对路径链接资源。目前,您正在使用诸如<link rel="stylesheet" th:href="@{assets/css/simple.css}"> 之类的相对路径进行链接。

    尝试将您的资源更新为:

    <link rel="stylesheet" th:href="@{/assets/css/simple.css}">
    <img th:src="@{/assets/img/java60.png}" sizes="16x16" alt="love">
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-15
      • 2017-07-13
      • 1970-01-01
      • 1970-01-01
      • 2019-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多