2014-10-06 16 views
5

ich wünsche benutzerdefinierte 404-Fehlerseite hat .I Geschwindigkeit in meinem Classpath, aber ich will nicht Geschwindigkeit Ansicht Resolver Im Folgenden verwenden ist mein CodeFrühling Boot benutzerdefinierte Fehlerseite für 404

@EnableAutoConfiguration(exclude={VelocityAutoConfiguration.class}) 
@ComponentScan 
public class Application { 
Properties props = new Properties(); 

public static void main(String[] args) { 
    SpringApplication.run(Application.class, args); 
} 
} 

ich bin nicht in der Lage, alle 404 zu meinem einigen HTML im Ressourcenverzeichnis umzuleiten.

Bitte helfen

P.S Es funktioniert, wenn ich Verwendung velocityresolver bin und error.vm in Vorlagenverzeichnis.

Dank ans Grüßen

Antwort

11

Sie können eine EmbeddedServletContainerCustomizer bieten und fügen Sie Ihre (z statisch) Fehlerseiten gibt. Siehe Error Handling im Frühjahr Boot Dokumente. Z. B:

@Bean 
public EmbeddedServletContainerCustomizer containerCustomizer() { 
     return new EmbeddedServletContainerCustomizer() { 
      @Override 
      public void customize(ConfigurableEmbeddedServletContainer container) { 
       container.addErrorPages(new ErrorPage(HttpStatus.NOT_FOUND, "/404.html")); 
      } 
     }; 
} 
+0

Danke, es hat funktioniert, obwohl ich das Gleiche probiert habe und es vorher nicht geklappt hat (habe ein paar Stunden damit verbracht, meinen Kopf an die Wand zu hämmern). Ich nehme an, dass Sie einen statischen Ordner benötigen, um htmls zu haben, ich hatte meine 404.html in Ressourcen-Ordner. –

+1

Ja statische Dateien müssen im statischen Ordner sein. Sie können jedoch andere Stellen konfigurieren, an denen Ihre statischen Dateien bereitgestellt werden sollen. Sie können hier auch eine Ansicht verwenden (anstelle einer statischen Datei). – cfrick

+3

@cfrick, wie würden Sie eine Ansicht anstelle einer statischen Datei verwenden? –

8

Ab Frühling Stiefel 1.4.x:

Wenn Sie eine benutzerdefinierte HTML-Fehlerseite für einen bestimmten Statuscode angezeigt werden soll, können Sie eine Datei in einem /error Ordner hinzufügen können. Fehlerseiten können entweder statisches HTML sein (d. H. Unter einem der statischen Ressourcenordner hinzugefügt werden) oder mithilfe von Vorlagen erstellt werden. Der Name der Datei sollte der genaue Statuscode (z. B. 404) oder eine Serienmaske (z. B. 5xx) sein.

Zum Beispiel 404 zu einer statischen HTML-Datei auf der Karte, Ihre Ordnerstruktur wie folgt aussehen:

src/ 
+- main/ 
    +- java/ 
    | + <source code> 
    +- resources/ 
     +- public/ 
      +- error/ 
      | +- 404.html 
      +- <other public assets> 

alle 5xx Fehler ordnen ein Freemarker-Vorlage, dann würden Sie eine Struktur wie folgt aussehen:

src/ 
+- main/ 
    +- java/ 
    | + <source code> 
    +- resources/ 
     +- template/ 
      +- error/ 
      | +- 5xx.ftl 
      +- <other templates> 

Kasse die Spring Boot documentation für ausführlichere Diskussion.

Verwandte Themen