У меня есть базовое c приложение 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