2016-08-18 3 views
0

Мой вопрос заключается в том, как добавлять статические файлы, такие как CSS и файлы изображений, чтобы я мог их использовать. Я использую Spring MVC и Thymeleaf. Я смотрел на разные должности на эту тему, но они не помогли мне, поэтому я спрашиваю. В соответствии с этими сообщениями я помещал свой файл CSS и изображений в resources/static/css и resources/static/images directory.Как добавить статические файлы с помощью Spring MVC и Thymeleaf

demo

Под templates (под webapp/WEB-INF/templates), где все мои HTML файлы сохраняются, те, кто хочет использовать CSS и графические файлы.

У меня есть следующий файл LoginApplicationConfig. Сами два нижних методы я включил так, что мои HTML файлы могут использовать стили и файлы изображений:

@EnableWebMvc 
@Configuration 
@ComponentScan({ "com.myapp.spring.*" }) 
@Import(value = { LoginSecurityConfig.class }) 
public class LoginApplicationConfig extends WebMvcConfigurerAdapter implements ApplicationContextAware{ 

    private ApplicationContext applicationContext; 

    @Override 
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { 
     this.applicationContext = applicationContext; 
    } 

    @Bean 
     public ViewResolver viewResolver() { 
     ThymeleafViewResolver resolver = new ThymeleafViewResolver(); 
     resolver.setTemplateEngine(templateEngine()); 
     resolver.setCharacterEncoding("UTF-8"); 
     return resolver; 
    } 

    @Bean 
     public TemplateEngine templateEngine() { 
     SpringTemplateEngine engine = new SpringTemplateEngine(); 
     engine.setEnableSpringELCompiler(true); 
     engine.setTemplateResolver(templateResolver()); 
     return engine; 
    } 

    private ITemplateResolver templateResolver() { 
     SpringResourceTemplateResolver resolver = new SpringResourceTemplateResolver(); 
     resolver.setApplicationContext(applicationContext); 
     resolver.setPrefix("/WEB-INF/templates/"); 
     resolver.setTemplateMode(TemplateMode.HTML); 
     return resolver; 
    } 

    @Override 
    public void addResourceHandlers(final ResourceHandlerRegistry registry) { 
     registry.addResourceHandler("/resources/**").addResourceLocations("/resources/static/css").setCachePeriod(31556926); 
     registry.addResourceHandler("/resources/**").addResourceLocations("/resources/static/images").setCachePeriod(31556926); 
    } 
    @Override 
    public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) { 
     configurer.enable(); 
    } 

} 

Тогда в моем файле index.html, я включил следующую строку, чтобы я мог включить файл стилей (с использованием thymeleaf):

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

Но я продолжаю получать ошибку, которую не удалось загрузить stylesmd.css.

Мои вопросы:

  1. является размещение моих стилей и файлов изображений правильным. То есть, в каких папках я должен их вставить. Я пробовал различное местоположение, например, в каталоге webapp и WEB-INF, но это не сработало.
  2. Нужны ли нижние два метода в LoginApplicationConfig? Кроме того, я был немного смущен тем, что включить в метод addResourceHandler(...) и что в методе addResourceLocations(...).
  3. Является ли ссылка на таблицу стилей (с использованием тимелеафа) правильной?

Я знаю, что по этому вопросу уже существует много контента, но это не работало для меня, поэтому я спрашиваю.

ответ

1

Вот как я заработал. Достаточно одной строки.

registry.addResourceHandler("/static/**").addResourceLocations("/static/"); 

И

<head> 
    <link rel="stylesheet" type="text/css" href="/static/css/your.css" th:href="@{/static/css/your.css}"/> 
</head> 

Если он держит неудачу, попытайтесь переместить папку «Шаблоны» в папку ресурсов в качестве вложенной.

Смежные вопросы