シングルビューアプリケーションでvaadin 7.7.7、spring-boot 1.5ユーザーからuriフラグメントhttps:/ tld /#!category-name-1をチェックし、カテゴリアイテムを表示するに存在しない場合はvaadin + spring boot:要求のエラーページに転送できません
VaadinService.getCurrentResponse().sendError(404, "page not found!");
しかし、私は(埋め込まTomcatで)更新スプリングブート1.5とvaadin 7.7.7の後にエラーが発生しました:
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では機能しません –