2013-06-16 15 views
1

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

Я с Spring MVC веб-сайта с дерева файлов, который выглядит следующим образом:

webapp\ 
    resources\ 
     style.css 
     myimg.png 
     post.html 
    Main.html 

Мой сервлет устанавливает main.html быть его главную страницу и правильно загружает со стилем и рис I упоминал об использовании этих тегов:

<link rel="stylesheet" type="text/css" href="resources\style.css" 
    media="screen" /> 
<img src="resources\myimg.png" style="padding-left: 25px" /> 

Также я определяю в моей конфигурации (я использую конфигурацию класса):

public class ApiServletConfig extends WebMvcConfigurerAdapter { 
    @Override 
    public void addResourceHandlers(ResourceHandlerRegistry registry) { 
     registry.addResourceHandler("/resources/**").addResourceLocations("/resources/"); 
    } 
} 

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

post.html имеет следующие метки:

<link rel="stylesheet" type="text/css" href="style.css" media="screen" /> 
<img src="myimg.png" style="padding-left: 25px"/> 

Кроме того, я попытался с resources\style.css и resources\myimg.png

вызов контроллер выглядит следующим образом:

@RequestMapping(value = "/{id}/view", method = RequestMethod.GET, produces = "text/html") 
public String getPostByIdHtml(@PathVariable String id) throws IOException { 
    return "/resources/post.html"; 
} 

main.html имеет ссылку что выглядит следующим образом: http://mysite.com/100/view

Что еще нужно сделать для загрузки css и изображения. Спасибо за помощь!

EDIT: После комментария, что мой web.xml:

<?xml version="1.0" encoding="UTF-8"?> 

http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd»версия = "3,0"> /Main.html

Не очень интересно, я думаю, у меня есть инициализационные в Java коде, вероятно, более интересное:.

public class WebInit implements WebApplicationInitializer { 

@Override 
public void onStartup(final ServletContext container) { 
    final AnnotationConfigWebApplicationContext context = new AnnotationConfigWebApplicationContext(); 

    context.register(ApiServletConfig.class); 

    final ServletRegistration.Dynamic dispatcher = container.addServlet("api-dispatcher", 
                     new DispatcherServlet(context)); 

    dispatcher.setLoadOnStartup(1); 
    dispatcher.addMapping("/api/*"); 
} 
} 
+0

Можете ли вы показать ваш web.xml –

+0

Я редактировал пост. Я не использую конфигурацию в Интернете.xml, но с внедрением 'WebApplicationInitalizer'. Он делает то же самое – Avi

+0

"* Кроме того, я попытался использовать' resources \ style.css' и 'resources \ myimg.png' *. Это просто неправильно. Вы рассматриваете это как локальную файловую систему на диске. – Lion

ответ

0

Проблема заключалась в том, что страница изменяет URL. Это выглядит примерно так:

http://[web-server]/[app-name]/api/post/100/view

Потому что я делаю JSon вызов.

Если я изменяю путь css к чему-то вроде этого, он работает!

<link rel="stylesheet" type="text/css" href="../../../resources/style.css" media="screen" />

+0

Я настоятельно рекомендую вам использовать c: URL для всех (не exterm) ссылок в jsp. С URL-адресом c: вы можете написать URL-адрес относительно приложения, тэг автоматически добавит оставшиеся части. Тогда у вас не будет проблем (с относительными URL-адресами), если кто-то изменит текущий URL-адрес – Ralph

1

Предполагая, что ваши CSS и графические файлы находятся на ресурсы папки, которая выглядит как в случае, согласно вашей структуре папок, я считаю, вы должны обновить свой код следующим образом:

<link rel="stylesheet" type="text/css" href="/resources/style.css" media="screen" /> 
<img src="/resources/myimg.png" style="padding-left: 25px"/> 
+0

Пробовал это также. Не работает:/ – Avi

+0

Вы можете получить доступ к своему файлу css со следующими ссылками: http://mysite.com/resources/style.css или http://mysite.com// Ресурсы/style.css? Конечно, mysite.com - это какая-то машина, на которой размещено ваше приложение на – vincentks

+0

Удивительно, да. – Avi