在xhtml中使用doFilter的嵌入页面无效

时间:2013-05-01 11:11:52

标签: java servlet-filters

我在项目中应用了一个过滤器,如下所示:

public class Filter implements javax.servlet.Filter{

    @Override
    public void destroy() {
        // TODO Auto-generated method stub

    }

    @Override
    public void doFilter(ServletRequest request, ServletResponse response,
            FilterChain chain) throws IOException, ServletException {
            if (((HttpServletRequest) request).getSession().getAttribute("admin") == null) {
                // Not logged in, so redirect request to login page.
                ((HttpServletResponse) response).sendRedirect("../index.xhtml");
            }
        }


    @Override
    public void init(FilterConfig arg0) throws ServletException {
        // TODO Auto-generated method stub

    }

及其在web.xml中的条目如下

<filter>  
        <filter-name>Filter</filter-name>  
        <filter-class>com.kc.aop.bean.Filter</filter-class>  
  </filter> 
  <filter-mapping>  
        <filter-name>Filter</filter-name>  
        <url-pattern>/admin/*</url-pattern>  
   </filter-mapping>

我的管理文件夹中有以下文件:

dashboard.xhtml
introduction.xhtml
news.xhtml

introduction.xhtml和news.xhtml使用

嵌入dashboard.xhtml
<iframe id= "iframe" width="1000px" height="300px" src="introduction.xhtml"></iframe> 

我在index.xhtml中登录,但是当我尝试登录时,我可以看到我的dashboard.xhtml,但使用introduction.xhtml的iframe显示以下错误。

XML Parsing Error: no element found
Location: http://localhost:8080/AOP/admin/introduction.xhtml
Line Number 1, Column 1:

任何想法,为什么这样的行为。我的doFilter实现有问题吗?

1 个答案:

答案 0 :(得分:1)

您需要在filterChain.doFilter(request, response);方法实施中致电doFilter。否则,不会调用其余的过滤器。