gpt4 book ai didi

java - 当未找到 FacesContext session 属性时如何重定向到 JSF 中的错误页面

转载 作者:太空宇宙 更新时间:2023-11-04 08:29:47 24 4
gpt4 key购买 nike

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

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

在每个托管 bean 构造函数中,我都会检查此 session 属性,并相应地设置一个 boolean 值。我将该 boolean 值设置为 tr:document 的呈现属性的值。类似这样的

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

基于session属性,页面可能会渲染或不渲染。我想更优雅地处理这个问题。

我通过this question在 SO 中,它告诉了过滤器的用法。我使用了过滤器,如图 here .

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

在 doFilter() 方法中,我正在检查这样的 session 属性如果它是 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>

我想 myfaces 有一些滤镜。我可以再拥有一个吗?

最佳答案

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

关于java - 当未找到 FacesContext session 属性时如何重定向到 JSF 中的错误页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7764098/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com