После добавления @PathVariable ресурсы становятся недоступными - PullRequest
1 голос
/ 29 января 2020
    @GetMapping("/instructor-edit-course")
    private String instructorAddCourse(Model model) {
        model.addAttribute("course", new Course());

        return "instructor-edit-course";
    }

Над кодом все в порядке. Ресурсы найдены. Но когда я добавляю @PathVariable к пути, как показано ниже, приложение ищет ресурсы в

http://localhost: 8080 / instructor-edit-course / assets / images / icon / нижний колонтитул / facebook-square@2x.png

вместо

http://localhost: 8080 / assets / images / icon / footer / facebook-square@2x.png

@GetMapping("/instructor-edit-course/{id}")
    private String instructorEditCourse(@PathVariable String id, Model model) {
        // go to course page
        Course course = courseService.findById(Integer.parseInt(id));
        model.addAttribute("course", course);

        return "instructor-edit-course";
    }

Класс WebConfig

package com.hrglob.elearning.config;


import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Description;
import org.springframework.web.servlet.ViewResolver;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.thymeleaf.spring5.SpringTemplateEngine;
import org.thymeleaf.spring5.view.ThymeleafViewResolver;
import org.thymeleaf.templateresolver.ClassLoaderTemplateResolver;

@Configuration
@EnableWebMvc
@ComponentScan(basePackages = {"com.xxxx.*"})
public class WebConfig implements WebMvcConfigurer {

    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        registry.addViewController("/").setViewName("index");
    }

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

    @Bean
    @Description("Thymeleaf template resolver serving HTML 5")
    public ClassLoaderTemplateResolver templateResolver() {

        var templateResolver = new ClassLoaderTemplateResolver();

        templateResolver.setPrefix("templates/");
        templateResolver.setCacheable(false);
        templateResolver.setSuffix(".html");
        templateResolver.setTemplateMode("HTML5");
        templateResolver.setCharacterEncoding("UTF-8");
        templateResolver.setOrder(0);

        return templateResolver;
    }


    @Bean
    @Description("Thymeleaf template engine with Spring integration")
    public SpringTemplateEngine templateEngine() {

        var templateEngine = new SpringTemplateEngine();
        templateEngine.setTemplateResolver(templateResolver());

        return templateEngine;
    }


    @Bean
    @Description("Thymeleaf view resolver")
    public ViewResolver viewResolver() {

        var viewResolver = new ThymeleafViewResolver();

        viewResolver.setTemplateEngine(templateEngine());
        viewResolver.setCharacterEncoding("UTF-8");

        return viewResolver;
    }
}

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