Отображение страницы с помощью контроллера Spring mvc добавляет конечную точку к ресурсам страницы - PullRequest
1 голос
/ 16 марта 2020

У меня есть пружинный контроллер MVC, который возвращает страницу, подобную этой

@Controller
@RequestMapping("/subscriber")
public class SubscriberWebController {
    @GetMapping("/edit/{id}")
    public String getSubscriber(@PathVariable("id") Long id, Model model) {
        model.addAttribute("id", id);
        return "subscriber/manage";
    }

    @GetMapping("/add")
    public String addSubscriber() {
        return "subscriber/manage";
    }
}

Проблема заключается в том, что при управлении. html загружается, активы загружаются с использованием http://localhost: 8081 /subscriber/vendor/nucleo/css/nucleo.css вместо http://localhost: 8081 / vendor / nucleo / css / nucleo. css. Это приводит к 404 при загрузке всех ресурсов страницы. Кажется, я не могу понять, что делаю неправильно.

РЕДАКТИРОВАТЬ

У меня есть эта конфигурация в моей ApplicationConfiguration, чтобы помочь обслуживать все stati c CSS и JS файлов.

@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
    registry.addResourceHandler("/**")
            .addResourceLocations("classpath:/static/")
            .setCachePeriod(0);
}

Тем не менее, проблема все еще сохраняется

Ответы [ 2 ]

1 голос
/ 16 марта 2020

Исходя из ответа @ eugen выше, я изменил свой класс веб-конфигурации следующим образом:

@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
    registry.addResourceHandler("/static/**")
            .addResourceLocations("classpath:/static/")
            .setCachePeriod(0);
}

и на своих HTML страницах я ссылаюсь на ресурсы stati c таким образом:

<link rel="stylesheet" href="/vendor/nucleo/css/nucleo.css">

Обратите внимание на "/" перед поставщиком в атрибуте href выше. Это решает мою проблему

1 голос
/ 16 марта 2020

Вы не сказали, как вы ссылаетесь на CSS в вашем менеджменте. html

В случае, если вы хотите, чтобы ваш CSS загружался из / vendor / nucleo / css /, поместите свой CSS ссылаться так:

<link rel="stylesheet" href="vendor/nucleo/css/nucleo.css">

и добавить сопоставление в пакет вашего поставщика:

<mvc:resources mapping="/vendor/**" location="/ACTUAL LOCATION/"/>

Надеюсь, это поможет

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