2016-11-23 3 views
0

Ich entwickle eine Webapp mit Spring 4.3.4 + Spring MVC + Thymeleaf 3.0.2. Übrigens habe ich Spring Security noch nicht integriert, daher gibt es keine Sicherheitsrichtlinien. Das Problem ist einfach: Die statischen Ressourcen sind nicht im Browser geladen (Fehler 404).Spring MVC 4 + Thymeleaf: statische Ressourcen 404 Fehler

Das ist mein Projekt Ordnerstruktur, dass ein Standard-Maven-Struktur ist (ich habe setzen statische Ressourcen auf /src/main/resources/static, aber ich habe auch versucht, /src/main/webapp/ oder /src/main/webapp/WEB-INF/):

enter image description here
und dies ist zum Beispiel, wie ich CSS Link auf meinen Seiten (glauben Sie mir, die Datei /src/main/resources/static/assets/css/style.css wirklich existiert):

<link th:href="@{/assets/css/style.css}" type="text/css" /> 

Soweit ich weiß, ich sollte keine ResourceHandler müssen Inhalte zu handhaben auf /src/main/resourcess/statisch/assets/, die bereits bei /assets/ verfügbar sein sollte, aber es funktioniert nicht, so in der Konfiguration meiner Feder java ich auch auch einige Versuche wie gemacht haben:

@Override 
public void addResourceHandlers(ResourceHandlerRegistry registry) { 
    registry.addResourceHandler("classpath:/static/assets/**").addResourceLocations("/assets/"); 
    registry.addResourceHandler("classpath:/static/pages/**").addResourceLocations("/pages/"); 
} 

In jedem Fall sind CSS- und JS-Dateien nicht zugänglich.

Mein Dispatcher Servlet an die Wurzel zugeordnet ist /:

<servlet-mapping> 
    <servlet-name>myappDispatcherServlet</servlet-name> 
    <url-pattern>/</url-pattern> 
</servlet-mapping> 

Wenn ich HTML auf Browser überprüfen kann ich sehen, dass der oben genannte Tag wird:

<link href="/myapp/assets/css/style.css" rel="stylesheet" type="text/css"> 

, die ziemlich richtig zu mir aussieht, Recht?

Also, warum erhalte ich einen 404 Fehler, wenn ich versuche, auf das CSS zuzugreifen? Vergesse ich etwas Wichtiges?

Danke,
Luca

Antwort

1

das Problem, das ich meine Ordnerstruktur ändern musste zu lösen, bewegen statische Ressourcen in /webapp/ Ordner.Ich bin mir ziemlich sicher, dass es einen Weg gibt, CSS und JS in /resources/ Ordner zu verlassen, aber ich habe es nicht funktioniert, so ist dies meine neue Ordnerstruktur:

enter image description here

dann habe ich die Ressource Handler Mapping gesetzt:

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

und das ist der Link-Tag im HTML-Template verwendet (die sowohl für dynamische und statische Belastung der Seite funktioniert):

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

entfernen Zuordnungen Ressourcenhandler,

dann

ändern
<link th:href="@{/assets/css/style.css}" href="../static/assets/css/style.css" type="text/css" /> 
+0

Ich habe bereits mit und ohne Ressourcen-Handler-Zuordnungen versucht, und das Ergebnis ist das gleiche. Außerdem ist Ihr Tag genau wie meines, mit Ausnahme des Attributs _href_, dass es von der Thymeleaf-Engine während des Renderns der Ansicht ignoriert wird (dies kann nur beeinflusst werden, wenn Sie die .html-Vorlage statisch öffnen). – Dolfiz