在我的 JSF 应用程序中,如果会话属性(如 userRole)的值为“contributor”,我需要将用户从页面 A 重定向到页面 B,如果它是“作者”,则需要重定向到页面 C。
有人告诉我,我必须实现一个页面侦听器,或者可能是一个会话侦听器。虽然我知道编写监听器类非常简单和标准,但我不知道如何在 JSF 页面本身上设置它(监听会话)。
有人吗?
在我的 JSF 应用程序中,如果会话属性(如 userRole)的值为“contributor”,我需要将用户从页面 A 重定向到页面 B,如果它是“作者”,则需要重定向到页面 C。
有人告诉我,我必须实现一个页面侦听器,或者可能是一个会话侦听器。虽然我知道编写监听器类非常简单和标准,但我不知道如何在 JSF 页面本身上设置它(监听会话)。
有人吗?
会话侦听器 ( HttpSessionListener
) 不合适,因为它没有对当前 HTTP 请求/响应的引用,这是更改请求/响应目标所必需的。
使用过滤器。要了解有关过滤器的更多信息,请查看我们的servlet-filters 标签信息页面。请注意,会话范围的 JSF 托管 bean 本身作为HttpSession
属性存储,托管 bean 名称作为键。您可以通过doFilter()
以下方法访问它们:
Bean bean = (Bean) ((HttpServletRequest) request).getSession().getAttribute("bean");
或者当它基于 POST 操作来确定时,只需在托管 bean 操作方法中返回不同的结果。然后只需使用(隐式)JSF 导航。伪:
public String submit() {
if (user is contributor) return "pageB";
if (user is author) return "pageC";
return "pageA";
}