通过单视图应用程序vaadin 7.7.7,spring-boot 1.5我从用户检查uri片段https:/ tld /#!category-name-1,如果类别存在秀项,如果没有vaadin + spring boot:无法转发到错误页面请求
VaadinService.getCurrentResponse().sendError(404, "page not found!");
但我得到了错误的更新春天启动1.5和7.7.7 vaadin(与嵌入式的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
我怎么能发送从vaadin HTTP错误页面给用户?
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;
}
}
它不适用于Vaadin 8.0.5和Spring引导1.5.3 –