Статические ресурсы Spring MVC 4 не загружаются в Thymeleaf

Я пытаюсь загрузить статические ресурсы в html-файл тимелеафа. Но ресурсы не загружены. Кто-нибудь знает, что я здесь делаю не так ....

Я использую здесь Spring Java Config. Это мой класс конфигурации

@Configuration
@EnableScheduling
@ComponentScan(basePackages = "test.controller")
public class ControllerConfig extends WebMvcConfigurationSupport {

    private static final Logger log = LoggerFactory.getLogger(ControllerConfig.class);

    @Override
    public void configureMessageConverters(final List<HttpMessageConverter<?>> _converters) {
        _converters.add(getMappingJackson2HttpMessageConverter());
        addDefaultHttpMessageConverters(_converters);
    }

    @Override
    public void addResourceHandlers(final ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/resources/**").addResourceLocations("/resources/");
    }

    @Override
    public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
        configurer.enable();
    }

    @Bean
    public MappingJackson2HttpMessageConverter getMappingJackson2HttpMessageConverter() {
        MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
        converter.setObjectMapper(getObjectMapper());
        return converter;
    }

    @Bean
    public ObjectMapper getObjectMapper() {
        ObjectMapper objectMapper = new ObjectMapper();
        objectMapper.configure(SerializationFeature.WRAP_ROOT_VALUE, true);
        objectMapper.configure(DeserializationFeature.UNWRAP_ROOT_VALUE, true);
        objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
        objectMapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));

        return objectMapper;
    }

    @Bean
    public ServletContextTemplateResolver templateResolver() {
        ServletContextTemplateResolver templateResolver = new ServletContextTemplateResolver();
        templateResolver.setPrefix("/WEB-INF/views/");
        templateResolver.setSuffix(".html");
        templateResolver.setTemplateMode("HTML5");
        templateResolver.setCacheable(false);

        return templateResolver;
    }

    @Bean
    public SpringTemplateEngine templateEngine() {
        SpringTemplateEngine templateEngine = new SpringTemplateEngine();
        templateEngine.setTemplateResolver(templateResolver());

        return templateEngine;
    }

    @Bean
    public ViewResolver viewResolver() {
        ThymeleafViewResolver viewResolver = new ThymeleafViewResolver();
        viewResolver.setTemplateEngine(templateEngine());
        viewResolver.setOrder(1);

        return viewResolver;
    }
}

Это моя HTML-страница.

<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="utf-8"/>
    <title th:text="'Hello ' + ${name} + '!'"></title>
    <link th:href="@{/resources/css/main.css}" rel="stylesheet"/>
</head>
<body>
<h2 class="hello-title" th:text="'Hello ' + ${name} + '!'"></h2>
<script th:src="@{/resources/js/main.js}"></script>
</body>
</html>

Вот как моя структура папок относится к статическим ресурсам, которые необходимо загрузить.

введите описание изображения здесь

Я нашел ресурсы в Интернете, где использовалось WebMvcConfigurerAdapter. но вместо этого я использую WebMvcConfigurationSupport. У меня нет возможности изменить это.

Я добавил зависимость Thymeleaf:

compile group: 'org.thymeleaf', name: 'thymeleaf-spring4', version: '2.1.2.RELEASE'
compile "org.springframework:spring-webmvc:${springVersion}" 

springVersion = 4.0.6.RELEASE

Когда я запускаю проект и загружаю HTML-файл, CSS не применяется. Но HTML загружается нормально, как и ожидалось :(


person Shenali Silva    schedule 07.08.2019    source источник
comment
Новичок в Spring и Thymeleaf, имел в виду hellokoding.com/. для того, чтобы доработать до этого   -  person Shenali Silva    schedule 07.08.2019
comment
Не могли бы вы повторно прикрепить изображение с файловой структурой?   -  person lopushen    schedule 07.08.2019


Ответы (1)


Попробуйте настроить свои ресурсы следующим образом:

registry.addResourceHandler("/**").addResourceLocations("classpath:/resources/")

И связать свой css следующим образом:

<link rel="stylesheet" th:href="@{/css/main.css}"/>
person Jorge.V    schedule 08.08.2019