Статические файлы пути к контексту начальной загрузки Spring не найдены - PullRequest
0 голосов
/ 19 сентября 2019

У меня проблема с тем, что мое приложение не может найти мои статические файлы.Это, однако, происходит только на определенном уровне.Как вы можете видеть из фрагментов кода ниже, css, images, js и т. Д. Работают с некоторыми файлами, а не с другими.Не уверен, что мне здесь не хватает.

Мой стек: Spring Boot, Thymeleaf

Часть моего файла application.yml:

server:
  port: 8090
  servlet:
    context-path: /myapp

Структура каталогов общих ресурсов моего приложения:

/resources
   /public
      /css
      /images
      /js

Структура шаблона моего приложения и где работают стили и изображения:

/resources
  /templates/index.html (works)
  /templates/admin/index.html (works)
  /templates/admin/user/admin/showuser.html (does not work)

Код из /resources/admin/fragments/header.html (используется в качестве файла заголовка длядругие файлы)

<!DOCTYPE html>
<html>
<head>
    <link href="css/mycss.css" rel="stylesheet">

Код из /resources/templates/index.html (работает) (не включает фрагмент header.html)

<link href="css/mycss.css" rel="stylesheet">

Код из / resources / templates/admin/index.html (работает) (включает header.html в качестве фрагмента с использованием Thymeleaf)

<!--/*/ <th:block th:include="/admin/fragments/header"></th:block> /*/-->

Код из /resources/templates/admin/user/admin/showuser.html (не работает)(Включает header.html как фрагмент с использованием Thymeleaf)

<!--/*/ <th:block th:include="/admin/fragments/header"></th:block> /*/-->

Не уверен, как это исправить.Спасибо!

1 Ответ

1 голос
/ 19 сентября 2019

Когда ваши URL не начинаются с косой черты /, они пытаются разрешить текущий каталог.Например:

Page: /templates/index.html
Css:  css/mycss.css

The browser tries to locate /templates/css/mycss.css

Если случаи, которые не работают:

Page: /templates/admin/user/admin/showuser.html
Css:  css/mycss.css

The browser tries to locate /templates/admin/user/admin/css/mycss.css

Если вы хотите убедиться, что ваш CSS работает везде, вам необходимо убедиться, что ссылка указывает последовательнов правильное место.Я предполагаю, что что-то вроде этого будет работать:

<link th:href="@{/css/mycss.css}" rel="stylesheet">

(Используя Thymeleaf, чтобы добавить контекст и сделать путь абсолютным.)

...