【发布时间】:2011-09-25 13:07:00
【问题描述】:
我们正在使用 Primefaces 2.x 和 Mojarra。我们正在尝试处理一种特殊情况,即您登录我们的网站然后删除所有 cookie。然后单击一个菜单选项。我们希望将用户重定向到我们的登录屏幕。问题是我们没有使用“url”属性,所以 Primefaces 进行了部分页面 ajax 调用。它返回一个空响应。
此时,没有会话 ID 就没有会话。因此,在服务器上,我们正在进行没有会话的 Ajax 调用。如果我尝试执行 sendRedirect,它会向浏览器发送 302,但 Primefaces 或浏览器会忽略它,因为它是 Ajax 调用的一部分。
所以,我想做的是在 Ajax 响应上放置一个侦听器并查找 302 或位置变化。但是,我找不到使用 jsf.ajax.addOnEvent 的方法。 Primefaces 似乎没有使用标准的 JSF Ajax 调用。我查看了 AjaxStatus,但它给我的只是事件,没有数据,也无法访问数据。
我以为我可以查找用户已删除的 JSESSIONID cookie,但是当我使用 Javascript 打印 cookie 时,没有打印会话 ID。
所以,我似乎无法在会话过滤器中执行 response.sendRedirect,因为我正在 Ajax 调用中。而且我无法在客户端检测到我需要重定向用户,如果我知道它是必需的,我可以这样做。而且我似乎无法从 Primefaces Ajax 响应中获得任何信息。
【问题讨论】:
标签: ajax primefaces