cod*_*247 9 java spring jsp tiles servlet-filters
我有一个ErrorFilter延伸弹簧GenericFilterBean.如果发生某些错误,我想显示一个用tile装饰的错误页面.
有没有办法从过滤器设置视图名称?
<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);
    }
}
当前的错误不是用瓷砖装饰的,所以我想用普通的页眉和页脚来装饰它,并从过滤器中调用该视图名称.
可能吗 ?
编辑: 基本上我们希望能够做类似于Controller-method的事情,即返回"视图名称";
已经尝试过:
必须有一种方法可以用 Spring MVC 来做到这一点,但我认为重定向就足够了。
try {
    chain.doFilter(req, resp);
} catch (Exception ex) {
    if (response.isCommitted()) {
        log(ex); // at least a part of the response is already sent to the client, you can't do much about it
    } else {
        session.setAttribute("last.exception", ex);
        response.sendRedirect(request.getContextPath() + getFilterConfig().getInitParameter("errorPage"));
    }
}
PS 不要捕获错误!
| 归档时间: | 
 | 
| 查看次数: | 2355 次 | 
| 最近记录: |