2016-03-23 1 views
0

Я использую весенний ботинок с тимелеафом, и все мои ресурсы находятся вне весеннего приложения на пути, как "/../../css/main.css". На dev env следует разрешить путь, используя URL-адрес, а live env - по пути.Весенний обработчик ресурсов не обрабатывается /../**

@Override 
public void addResourceHandlers(ResourceHandlerRegistry registry) { 
    String templates=env.getProperty("spring.thymeleaf.prefix"); 
    registry.addResourceHandler("/../../css/**") 
      .addResourceLocations(templates); 
} 
// spring.thymeleaf.prefix = http://website.com/assets/ 

Почему обработчик ресурса не обрабатывает эти виды ресурсов, но если я "/**" обрабатывает без проблем? Я что-то упускаю?

Edit: если resourceHandler является "/css/**" и расположение является URL не обрабатывается либо

ответ

1

Вы не можете ссылаться на внешние ресурсы, так как вы хотите, чтобы вызывающий искатель искал ресурсы от classpath.

Попробуйте сделать это, как в этом вопросе - Add external resources folder to Spring Boot или в этом - How do I use Spring Boot to serve static content located in Dropbox folder?

+0

спасибо. Это действительно работает на реальном сервере, но для разработчиков и тестирования я вроде бы отказался от этой идеи, так как у меня нет доступа к ресурсам локально, и единственный способ получить к ним доступ - через http. Я пытаюсь решить его с помощью ResourceResolver, изменив путь с помощью URL-адреса. К сожалению, preanding путь от согласованного обработчика ресурсов ('/../../css/http: // website.com/assets /'), и я не вижу способа удалить его из ResourceResolver. Я продолжаю смотреть, что мне нужно переопределить для этого – user2035693

+0

Итак, если ваши ресурсы размещены во внешнем ресурсе, почему вы не создали что-то вроде CDN для этих ресурсов? Создайте отдельный проект со статическими ресурсами и ссылкой на него. – sanluck

+0

К сожалению, у меня нет доступа к этому серверу, чтобы делать то, что я хочу – user2035693

1

Я уверен, что использование .. в addResourceHandler не действует, но у меня нет конкретной документации, чтобы поддержать его. Путь описывает шаблон, который сервер не получает, что указано в браузере. Из функции doc: «на основе указанных шаблонов URL-адресов». Если вы ссылаетесь на .. из браузера, который по-прежнему будет изменен на некоторый абсолютный путь, который будет отправлен на сервер. Вот почему ваши другие версии работают без проблем.

+0

когда я пишу '<ссылка й: HREF = "@ {/../../ CSS/main.css}"/ > 'это также путь на сервере, но не видимый путь с помощью spring-boot или thymeleaf. Итак, чтобы понять, потому что не видимый путь не обрабатывается? – user2035693

+0

Этот путь разрешается в браузере, поэтому сервер никогда не видит ссылки .. поэтому он не может использоваться в шаблоне соответствия пути. –

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