Spring-Boot-ResourceLocations nicht hinzufügen der css-Datei was zu einer 404

Gut, ich habe eine funktionierende spring-boot-Anwendung, die auf einem lokalen computer ausgeführt Prima. Allerdings habe ich bemerkt, dass wenn ich mvn package dann keiner meiner css-oder java-scripts, findet in

/src/main/wepapp/css

kopiert werden, in die jar-Datei (package) erstellt im Zielverzeichnis.

spring-boot-Referenz-Handbuch sagt

65.3 Konvertieren Sie eine bestehende Anwendung auf Spring Boot "Statische Ressourcen verschoben werden können /public (oder /statische oder /Ressourcen oder
/META-INF/resources) in die classpath-root."

24.1.4 Statische Inhalte "verwenden Sie nicht die src/main/webapp-Ordner, wenn Sie Ihre Anwendung Verpacken als Glas. Obwohl dieser Ordner ist ein
gemeinsamen standard, es funktioniert nur mit Krieg Verpackung und es wird
ignoriert von den meisten build-tools, wenn Sie das erzeugen einer jar."

So, dass bedeutet, dass ich alle meine js-und css-Ordner in den Ordner

/src/main/resources/static

also jetzt meine Struktur sieht so aus,

/src/main/resources/static/css/
/src/main/resources/static/js/

alle meine thymeleaf Vorlagen sind jedoch immer noch im

/src/main/resources/templates/

Habe ich gemacht, und soweit ich das verstanden habe weiß, ich muss noch hinzufügen das ResourceHandler zu meinem ResourceHandlerRegistry. Zuvor, wenn alle meine ccs wurden in "/src/main/wepapp/css/" mein ResourceHandlers sah aus wie das und es funktionierte sehr gut für mich.

@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
    registry.addResourceHandler("/pdfs/**").addResourceLocations("/pdfs/").setCachePeriod(0);
    registry.addResourceHandler("/img/**").addResourceLocations("/img/").setCachePeriod(0);
    registry.addResourceHandler("/js/**").addResourceLocations("/js/").setCachePeriod(0);
    registry.addResourceHandler("/css/**").addResourceLocations("/css/").setCachePeriod(0);

}

Habe ich versucht, indem mehrere Handler wie

 registry.addResourceHandler("/css/**").addResourceLocations("/css/").setCachePeriod(0);

oder

 registry.addResourceHandler("/css/**").addResourceLocations("/static/css/").setCachePeriod(0);

oder

 registry.addResourceHandler("/css/**").addResourceLocations("/").setCachePeriod(0);

etc.

aber keiner von Ihnen arbeitete für mich.
Die html-templates werden angezeigt, aber der browser-Konsole ist reporing 404, wenn Sie versuchen zu finden /css/corresponing.css oder /js/corresponing.js

Habe ich absichtlich deaktiviert, Spring security in meinem test-Projekt, um die Vereinfachung der Fehlersuche dieses Problems.

Eine weitere Sache, die Sache, die ich nicht ganz verstehe, ist die Bereitstellung Baugruppe. Ich habe einen Artikel gelesen, der sagte, dass, wenn ich tun wollen, haben bestimmte Ordner in meinem Ziel-Paket-jar-Datei erzeugt, die von maven, die ich tun müssen, um auch diese Ordner in meine Bereitstellung, Montage, gut jedoch habe ich "mvn package" ist noch nicht copping alle Inhalte(einschließlich Unterordner) von meinem /src/main/statische Ordner, in die Ziel-jar-Datei. Ich sehe jedoch die "Vorlagen" - Ordner kopiert und in der jar-Datei. So gibt es einige andere Magie geschieht hinter den kulissen.

Spring-Boot-ResourceLocations nicht hinzufügen der css-Datei was zu einer 404

Hier ist, wie erkläre ich das css in meinem thymeleaf layout, d.h.

/src/main/resources/templates/layout.html


<!DOCTYPE html>
<html>
  <head>
    <title layout:title-pattern="$DECORATOR_TITLE - $CONTENT_TITLE">Task List</title>
    <link rel="stylesheet" type="text/css" media="all"  th:href="@{/css/syncServer.css}"  href="../css/syncServer.css" />
    ...
  </head>
  <body>
      ...
  </body>
</html>

Meine Frage ist: Ist die Konfiguration, die ich getan so weit richtig und wenn ja, welche anderen Optionen/Einstellungen, die ich brauchen, um bewusst sein, um die app finden Sie die css-Dateien findet sich in /src/main/static/css/

Neben einer

test-Projekt

[email protected]:TheDictator/sArchitecture.git
  • Bei der Verwendung von Spring Boot, wenn Sie fügen Sie Ressourcen zu /src/main/resources/static Sie Bedarf der addResourceHandlers Konfiguration. Spring Boot wird sich darum kümmern, die Sachen auf seine eigene, wenn natürlich Sie haben verwendet @EnableAutoConfiguration sind und nicht verwendet werden @EnableWebMvc
  • Hallo geoand, ich hatte mich unter eine configuration-Klasse die @EnableWebMvc und jetzt habe ich es entfernt, aber immer noch die css sind nicht immer geladen. Ich habe sogar kommentieren addResourceHandlers bean, um zu überprüfen, ob diese automatisch registriert. kannst du einen link posten, über die die Tatsache, dass wir sollten nicht verwendet EnableWebMvc
  • Wenn Sie einen Blick auf den Quellcode von WebMvcAutoConfiguration sehen Sie @ConditionalOnMissingBean(WebMvcConfigurationSupport.class). Das bedeutet, dass WebMvcAutoConfiguration wird nur verwendet, wenn WebMvcConfigurationSupport wurde nicht so konfiguriert, wie eine Bohne, was wiederum bedeutet, wenn keine @EnableWebMvc vorhanden ist
  • Wenn Sie immer noch Probleme haben, könnten Sie veröffentlichen Sie Ihre Spring-Konfiguration? Benutzt habe ich die Ressourcen, die die Art, wie ich bereits in meinem ersten Kommentar, und haben überhaupt kein problem
  • Hallo geoand Es ist noch nicht das, was ich erwartet hatte es zu sein. Ich werde unten hacken das Projekt und nach dem Projekt in ein paar Stunden auf der github, dann werde ich den link hier posten. Vielen Dank für Ihre Unterstützung.
  • Ok, das klingt gut! Werde ich clone es und testen Sie es aus, wenn Sie Sie hochladen
  • ok, nachdem ich entfernt die @EnableWebMvc aus, dass ein Standort, den ich bereits erwähnt und hat Projekt clean und mvn clean sehe ich, dass alle meine css , Bilder, pdf;s kopiert im root-Verzeichnis des Ziel-jar-Datei. Also ich war zu schnell mit meiner letzten Bemerkung. Aber die css werden immer noch nicht angezeigt. Muss ich ändern, das addResourceHandlers der Sie vollständig zu entfernen?
  • Sie sollten Sie vollständig zu entfernen, da Spring Boot bereits konfiguriert die richtigen sind. Ich meine nicht, rufen Sie die addResourceHandlers im Spring-Konfiguration
  • Hallo geoand habe ich einen einfachen http-einzige Projekt, das zeigt das problem mit der css. Hochgeladen habe ich das Projekt auf github. Der link am Ende der Beschreibung der Frage
  • Ok, ich nehme einen Blick!

InformationsquelleAutor Tito | 2014-05-19
Schreibe einen Kommentar