【发布时间】: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 个案例。拦截器中的路径和日志:
- 调用正确的路径
/home- 一切正常
[09:02:48.759][INFO] /home [09:02:48.759][INFO] /assets/img/java60.png
- 调用不正确的路径
/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
- 调用不正确的路径
/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
- 调用不正确的路径
/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