【发布时间】:2011-04-06 17:11:39
【问题描述】:
我有一个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中的配置,errorfilter中的doFilter方法如下:
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);
}
}
当前错误页面没有用瓷砖装饰,所以我想用普通的页眉和页脚装饰它,并从过滤器中调用该视图名称。
有可能吗?
编辑: 基本上我们希望能够做一些类似于控制器方法的事情,即 return "view name";
已经试过了:
- httpResponse.sendRedirect("errorPageView"); 不起作用,它重定向到http://server/fooerrorPageView
- request.getRequestDispatcher("errorPageView").forward(request, response); 也没有,和上面类似(没有http重定向,但是给出了相同的“没有这样的页面错误”内容)李>
【问题讨论】:
标签: java spring jsp tiles servlet-filters