С помощью приложения с одним видом vaadin 7.7.7, spring-boot 1.5 я проверяю фрагмент uri https:/tld/#!category-name-1 от пользователя и, если категория существует, показывают элементы, а если нет
VaadinService.getCurrentResponse().sendError(404, "page not found!");
но я получил ошибку после обновления spring-boot 1.5 и vaadin 7.7.7 (со встроенным 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
Как я могу отправить страницы ошибок http от vaadin пользователю?
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;
}
}