1

Von Einzelansicht Anwendung vaadin 7.7.7, Spring-Boot-1.5 Ich überprüfe uri Fragment https:/tld/#! Kategorie-Name-1 von Benutzer und wenn die Kategorie zeige Artikel existieren und wenn nichtvaadin + Spring Boot: Kann nicht auf Fehlerseite für Anfrage

VaadinService.getCurrentResponse().sendError(404, "page not found!"); 

aber ich habe Fehler nach dem Update Feder-boot 1.5 und Vaadin 7.7.7 (mit embeded tomcat):

Cannot forward to error page for request [/vaadinServlet/UIDL/] as the response has already been committed. As a result, the response may have the wrong status code. If your application is running on WebSphere Application Server you may be able to resolve this problem by setting com.ibm.ws.webcontainer.invokeFlushAfterService to false 

Wie kann ich senden http Fehlerseiten von Vaadin zum Benutzer?

ErrorPageCutomizer.java

@Component 
public class ErrorPageCutomizer implements EmbeddedServletContainerCustomizer { 
    @Override 
    public void customize(ConfigurableEmbeddedServletContainer container) { 
     container.addErrorPages(new ErrorPage(HttpStatus.NOT_FOUND, "/error/404")); 
     container.addErrorPages(new ErrorPage(HttpStatus.INTERNAL_SERVER_ERROR, "/error/500")); 
    } 
} 

RestController.java

import org.springframework.boot.autoconfigure.web.ErrorController; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.bind.annotation.RestController; 

@RestController 
public class ErrorHandlingController implements ErrorController { 

    private static final String PATH = "/error"; 

    @RequestMapping(value = PATH + "/404") 
    public String error404() { 
     return "<div style='font-weight:bold; margin-top:200px; text-align:center; font-size:160%;'>Page not found...<br><a href=\"https://tld\">to home</a></div>"; 
    } 

    @RequestMapping(value = PATH + "/500") 
    public String error500() { 
     return "<div style='font-weight:bold; margin-top:200px; text-align:center; font-size:160%;'>500 Internal server error...</div>"; 
    } 

    @Override 
    public String getErrorPath() { 
     return PATH; 
    } 
} 

Antwort

0

Soliution war:

@Configuration 
public class AppInitializer implements WebApplicationInitializer { 

    @Bean 
    public ErrorPageFilter errorPageFilter() { 
     return new ErrorPageFilter(); 
    } 

    @Bean 
    public FilterRegistrationBean disableSpringBootErrorFilter(ErrorPageFilter filter) { 
     FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(); 
     filterRegistrationBean.setFilter(filter); 
     filterRegistrationBean.setEnabled(false); 
     return filterRegistrationBean; 
    } 
} 
+1

Es funktioniert nicht für Vaadin 8.0.5 & Spring Boot 1.5.3 –

-1

Haben Sie die SystemMessagesProvider versucht.

public class YourServlet extends VaadinServlet 
{ 
    @Override 
    protected void servletInitialized() throws ServletException 
    { 
     super.servletInitialized(); 

     getService().setSystemMessagesProvider(new SystemMessagesProvider() 
     { 
      @Override 
      public SystemMessages getSystemMessages(SystemMessagesInfo systemMessagesInfo) 
      { 
       final CustomizedSystemMessages c = new CustomizedSystemMessages(); 
       final String errorUrl = "<url to errorpage>"; 
       c.setSessionExpiredURL(errorUrl); 
       c.setSessionExpiredNotificationEnabled(false); 

       c.setAuthenticationErrorURL(errorUrl); 
       c.setAuthenticationErrorNotificationEnabled(false); 

       c.setCommunicationErrorURL(errorUrl); 
       c.setCommunicationErrorNotificationEnabled(false); 

       c.setCookiesDisabledURL(errorUrl); 
       c.setCookiesDisabledNotificationEnabled(false); 

       c.setInternalErrorURL(errorUrl); 
       c.setInternalErrorNotificationEnabled(false); 

       c.setSessionExpiredURL(errorUrl); 
       c.setSessionExpiredNotificationEnabled(false); 
       return c; 
      } 
     }); 
    } 
+0

Die Frage war: ‚Wie kann ich senden http Fehlerseiten von Vaadin zu Benutzer?‘ In diesem Provider eine errorUrl für eine Vielzahl von Fehlern definieren könnte. Nicht 'Wie kann ich Fehlerseiten mit Spring senden'. Und mein Vorschlag ist genau dies. Ich würde mich über eine Erklärung freuen, warum meine Antwort herabgestuft wurde. –

+0

wenn ich sende: VaadinService.getCurrentResponse(). SendError (404, "Seite nicht gefunden!"); hat folgenden Fehler auf der Konsole erhalten: "Kann nicht zur Fehlerseite für Anfrage [/] weitergeleitet werden, da die Antwort bereits festgeschrieben wurde. Daher hat die Antwort möglicherweise den falschen Statuscode. Wenn Ihre Anwendung auf WebSphere Application Server ausgeführt wird möglicherweise in der Lage sein, dieses Problem zu lösen, indem Sie com.ibm.ws.webcontainer.invokeFlushAfterService auf false setzen " Anpassen von sys msg ist nicht was ich meine –

Verwandte Themen