2015-05-27 7 views
0

Каким должен быть правильный способ обслуживания изображений или любых других статических ресурсов, таких как css и javascript, из каталога, существующего вне приложения?Обслуживание статических ресурсов из внешних каталогов

Я использовал это очень легко в Spring MVC-приложениях, используя элемент mvc:resources в xml-конфигурации или расширив WebMvcConfigurerAdapter и добавив соответствующие обработчики ресурсов в конфигурацию Java, затем указав путь файловой системы, в котором хранятся ресурсы.

Имея в виду, что, насколько я могу судить, jhipster не использует Spring MVC, как я могу достичь этой функциональности?

Я попытался настроить Spring MVC в jhipster, но введение dispatcherServlet только заставило приложение сломаться (как и ожидалось, правильно?), И я все еще получаю завивку Angular, поэтому я не уверен, что это решение путь.

Заранее спасибо.

UPDATE:

Добавлено мое решение ниже.

ответ

0

Благодаря магии Spring ботинка, теперь я знаю, что вы можете настроить MVC связанных вещи пути расширения WebMvcConfigurerAdapter. Поэтому я создал свой собственный класс конфигурации, который переопределяет соответствующий метод, в данном случае addResourceHandlers, и он работает как шарм.

Просто отметьте, что @EnableWebMvc НЕ ПОЛУЧЕН, в противном случае вы столкнетесь с передним концом JHipster.

0

Для dev просто поместите файл в/src/main/webapp/yourdir /, и он должен быть подан (если он является общедоступным статическим ресурсом). Для производства, вам нужно добавить его в статический фильтр в конфигурационном/WebConfigurer.java:

/** 
* Initializes the static resources production Filter. 
*/ 
private void initStaticResourcesProductionFilter(ServletContext servletContext, 
               EnumSet<DispatcherType> disps) { 

    log.debug("Registering static resources production Filter"); 
    FilterRegistration.Dynamic staticResourcesProductionFilter = 
      servletContext.addFilter("staticResourcesProductionFilter", 
        new StaticResourcesProductionFilter()); 

    staticResourcesProductionFilter.addMappingForUrlPatterns(disps, true, "/"); 
    staticResourcesProductionFilter.addMappingForUrlPatterns(disps, true, "/index.html"); 
    staticResourcesProductionFilter.addMappingForUrlPatterns(disps, true, "/images/*"); 
    staticResourcesProductionFilter.addMappingForUrlPatterns(disps, true, "/fonts/*"); 
    staticResourcesProductionFilter.addMappingForUrlPatterns(disps, true, "/scripts/*"); 
    staticResourcesProductionFilter.addMappingForUrlPatterns(disps, true, "/styles/*"); 
    staticResourcesProductionFilter.addMappingForUrlPatterns(disps, true, "/views/*"); 
    staticResourcesProductionFilter.setAsyncSupported(true); 
} 
+0

Моя проблема в том, что я работаю с загруженным пользователем репозиторием изображений, который находится в определенном пути в файловой системе, поэтому я не могу его перемещать. Вот почему я должен указать на это, как раньше с Spring MVC. –