Spring boot статическое содержимое для вложенных / префиксных контроллеров - PullRequest
0 голосов
/ 20 октября 2018

Я использую Spring boot 2.0.2 и Freemarker для своего веб-приложения.Статическое содержимое моего веб-приложения не загружается для вложенных / префиксных контроллеров.

Весь статический контент (изображения, CSS, js) находится под

/src/main/resources/static/js
/src/main/resources/static/images
/src/main/resources/static/css

Все отлично работает, если я используюэтот контроллер:

@RequestMapping(value = "/userProfile", method = RequestMethod.GET)
public ModelAndView getUser(@ModelAttribute("model") ModelAndView model,@RequestParam("userId") String userId) {

    UserProfile userProfile = userService.findById(userId);
    model.addObject("userProfile", userProfile);
    model.setViewName("userDetails");
    return model;
}

  userDetails.ftl is located at /src/main/resources/templates/userDetails.ftl

Однако я вижу 404 статического содержимого (js / css / images) для этого контроллера при выполнении запроса GET из браузера.

https://localhost:8443/users/js/saveUser.js -- 404
(Please note "users" in the URL while trying to load static content)

@RequestMapping(value = "/user/profile", method = RequestMethod.GET)
public ModelAndView getUser(@ModelAttribute("model") ModelAndView model,@RequestParam("userId") String userId) {

    UserProfile userProfile = userService.findById(userId);
    model.addObject("userProfile", userProfile);
    model.setViewName("userDetails");
    return model;
}

Код представления

<link rel="stylesheet" type="text/css" href="css/homepage.css">
<link rel="stylesheet" type="text/css" href="css/user-profile-display.css">
<script type="text/javascript" src="js/saveUser.js}"></script>
<script type="text/javascript" src="js/authenticate.js}"></script>

Я рассмотрел следующие проблемы, но не могу найти решение, которое будет работать:

Какуказать префикс для всех контроллеров в Spring Boot?

spring boot: отделить REST от статического содержимого

Любая помощь приветствуется.

1 Ответ

0 голосов
/ 20 октября 2018

Вы используете относительные пути.

Таким образом, если текущий URL-адрес, отображаемый в адресной строке браузера, равен http://somehost/userProfile, относительный путь css/homepage.css разрешается относительно http://somehost/, и запрос отправляется на * 1006.*, который отлично работает

Если текущий URL-адрес, отображаемый в адресной строке браузера, равен http://somehost/user/profile, относительный путь css/homepage.css разрешается относительно http://somehost/user/, и запрос отправляетсяна http://somehost/user/css/homepage.css, что не работает, поскольку это не URL-адрес ресурса CSS.

Используйте абсолютные пути:

href="/css/homepage.css"

В основном это работает как пути на жестком диске.Если вы находитесь в директоре /home/tim и выполняете less foo.txt, он отобразит файл /home/tim/foo.txt.Если вы выполните less /foo.txt, будет отображен файл /foo.txt.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...