@Override public void sendError(final int sc, final String msg) throws IOException { if (exchange.getExchange().isResponseStarted()) { throw UndertowServletMessages.MESSAGES.responseAlreadyCommited(); } exchange.getExchange().setResponseCode(sc); // todo: is this the best way to handle errors? final String location = servletContext.getDeployment().getErrorPages().getErrorLocation(sc); if (location != null) { RequestDispatcherImpl requestDispatcher = new RequestDispatcherImpl(location, servletContext); try { requestDispatcher.error( exchange.getExchange().getAttachment(HttpServletRequestImpl.ATTACHMENT_KEY), exchange.getExchange().getAttachment(HttpServletResponseImpl.ATTACHMENT_KEY), exchange.getExchange().getAttachment(ServletInitialHandler.CURRENT_SERVLET).getName(), msg); } catch (ServletException e) { throw new RuntimeException(e); } responseDone(exchange.getCompletionHandler()); } }
@Override public RequestDispatcher getRequestDispatcher(String path) { requestDispatcher.path = path; return requestDispatcher; }