У меня есть ErrorFilter
, который удлиняет весну GenericFilterBean
. Я хочу показать страницу с ошибками, украшенную плитками, если произошла какая-то ошибка.Установка имени вида в пружинном фильтре
Есть ли способ установить имя вида из фильтра?
<filter>
<filter-name>errorFilter</filter-name>
<filter-class>com.abc.filter.ErrorFilter</filter-class>
<init-param>
<param-name>errorPage</param-name>
<param-value>/jsp/errorpage.jsp</param-value>
</init-param>
</filter>
Это конфигурация в web.xml
и метод doFilter
в errorfilter
является следующее:
public void doFilter(ServletRequest req, ServletResponse resp,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest httpReq = (HttpServletRequest) req;
StringBuffer reqUrl = httpReq.getRequestURL();
try {
chain.doFilter(req, resp);
} catch (Exception ex) {
String requestRepresentation = createRequestRepresentation(req);
errorService.handleException(reqUrl.toString(), ex, requestRepresentation);
req.getRequestDispatcher(
getFilterConfig().getInitParameter("errorPage")).forward(req, resp);
} catch (Error er) {
errorService.handleError(reqUrl.toString(), er);
req.getRequestDispatcher(
getFilterConfig().getInitParameter("errorPage")).forward(req, resp);
}
}
Ток errorpage не декорирован плиткой, поэтому я хочу, чтобы украсить его с нормальным заголовок и нижний колонтитул и вызовите это имя вида из фильтра.
Возможно ли это?
Edit: В основном мы хотим, чтобы быть в состоянии сделать что-то подобное контролеру-метод т.е. возврата «имя вида»;
Уже пробовал:
- httpResponse.sendRedirect ("errorPageView"); не работает, перенаправляется на http://server/fooerrorPageView
- request.getRequestDispatcher ("errorPageView"). Forward (request, response); также не делает, подобно тому, как выше (не Перенаправление HTTP, но не дает такой же «нет такой ошибки страницы» содержание)
_sendRedirect_ будет просто перенаправлять браузер клиента на указанный URL-адрес, минуя любое разрешение имен имен. –