2016-09-30 3 views
0

Jetzt alle 404/500 führt zu einer JSON-Fehlermeldung.Wie konfiguriert man eine Weiterleitung für alle Fehler im Spring Boot?

Wie kann ich es so konfigurieren, dass auf allen 404/500 nur auf eine bestimmte Fehlerseite umleiten?

Ich habe folgendes meine initializer Klasse hinzugefügt:

@Bean 
public EmbeddedServletContainerCustomizer containerCustomizer() { 
    return container -> { 
     container.addErrorPages(new ErrorPage(HttpStatus.NOT_FOUND, "/error/errorpage")); 
     container.addErrorPages(new ErrorPage(HttpStatus.INTERNAL_SERVER_ERROR, "/error/errorpage")); 
    }; 
} 

Aber jetzt auf eine leere Seite ... es leitet nur

Lösung? Ich habe im Grunde genommen den Fehler-Controller implementiert und erzwinge, dass alle auf die Fehlerseite umgeleitet werden. Meine Fehlerseite ist eine JSP, die direkt unter WEB-INF/Seiten lebt. Jetzt ist das korrekt?

@RestController 
@RequestMapping("/errorpage") 
public class SimpleErrorController implements ErrorController { 

@Autowired 
public SimpleErrorController(ErrorAttributes errorAttributes) { 
    Assert.notNull(errorAttributes, "ErrorAttributes must not be null"); 
} 

@Override 
public String getErrorPath() { 
    return "/errorpage"; 
} 

@RequestMapping(produces = {"text/html"}) 
public ModelAndView errorHtml(HttpServletRequest request, HttpServletResponse response) { 
    response.setStatus(400); 
    return new ModelAndView("errorpage"); 
} 
} 

Antwort

1

EDIT: Sie müssten wahrscheinlich Ihre Bean Definition entfernen dafür arbeiten, wie ich sehe, haben Sie fügte hinzu, dass, nachdem ich meine Antwort abgegeben haben.

hinzufügen thymeleaf Abhängigkeit zu Ihrem pom:

 <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-thymeleaf</artifactId> 
     </dependency> 

Je nach Feder Boot-Version, fügen Sie eine der beiden auf Ihre Anwendungseigenschaften Datei:

error.whitelabel.enabled=false 

oder

server.error.whitelabel.enabled=false 

Erstellen Sie /src/main/resources/templates Ordner.

Fügen Sie diesem Ordner eine Datei mit dem Namen error.html mit dem HTML-Code hinzu, den Sie anzeigen möchten.

Wir haben die thymeleaf Templating-Engine verwendet, um die Standarddatei error.html zu verwenden, und Spring Boot mitgeteilt, seine Standard-Whitelabel-Fehlerseite nicht zu verwenden.

+0

funktioniert nicht für mich =/vergessen zu erwähnen, ich arbeite mit JSP, ist das wichtig? Ich möchte alle möglichen Fehler, nur zu dieser Fehlerseite gehen, anstatt die JSON, die es ausspuckt .. – iCodeLikeImDrunk

+0

Haben Sie Ihre Bean-Definition entfernen? – Andonaeus

+0

ja. Ich habe alles wieder rückgängig gemacht und bin deinem Beispiel gefolgt. gerade jetzt im Test einige Fehler Controller von Spring-Boot zur Verfügung gestellt – iCodeLikeImDrunk

Verwandte Themen