繁体   English   中英

找不到FacesContext会话属性时如何重定向到JSF中的错误页面

[英]How to redirect to error page in JSF when FacesContext session attribute is not found

我正在使用JSF和Apache myFaces 1.2.9开发移动Web应用程序。

在身份验证期间,我正在调用一个servlet,它将进行身份验证,然后在会话中设置一些属性。

并且在每个托管bean构造函数中,我都在检查此session属性,并因此设置了一个布尔值。我将该布尔值设置为tr:document的呈现属性的值。

<tr:document title="someid" rendered="#{controller.render}">
//SOME PAGE CONTENTS
</tr:document>

根据会话属性,页面是否可以呈现。我想更优雅地处理此问题。

我来过这个问题,在SO告诉filters.I的用途使用的过滤器如图所示这里

我将webFilter urlPattern更改为/faces/jsp/*因为我想检查每个jsp的会话属性。

在doFilter()方法中,我正在像这样检查会话属性,如果它为null我将重定向到无效的用户页面。

System.out.println("In doFilter");
            HttpServletRequest request = (HttpServletRequest) req;
            HttpServletResponse response = (HttpServletResponse) res;
            HttpSession session = request.getSession(false);

            if (session.getAttribute("myattribute") == null) {
       response.sendRedirect(properties.getProperty(INVALID_USER_REDIRECTURL, true));  // No attribute found, so redirect to Invalid user page.
            } else {
                chain.doFilter(req, res); // attribute found, so just continue request.
            }

但是我看不到我的过滤器被解雇,因为我看不到我的过滤器init(),doFilter()方法中保留的任何调试语句。

有什么帮助吗?

编辑:我只是通过了我的web.xml中的此过滤器映射

<filter>
    <filter-name>trinidad</filter-name>
    <filter-class>org.apache.myfaces.trinidad.webapp.TrinidadFilter</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>trinidad</filter-name>
    <servlet-name>faces</servlet-name>
  </filter-mapping>

我想我的脸有过滤器,我可以再换一个吗?

将过滤器映射到将FacesServlet映射到的URL模式。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM