来自Primefaces的Ajax状态/响应数据

时间:2011-06-29 21:57:45

标签: ajax primefaces

我们正在使用Primefaces 2.x和Mojarra。我们正在尝试处理您登录我们网站然后删除所有cookie的特定情况。然后单击菜单选项。我们希望发生的是将用户重定向到我们的登录屏幕。问题是我们没有使用“url”属性,因此Primefaces执行部分页面ajax调用。这会返回一个空响应。

此时,没有会话ID,就没有会话。因此,在服务器上,我们正处于没有会话的Ajax调用之中。如果我尝试执行sendRedirect,它会向浏览器发送302,但Primefaces或浏览器都忽略它,因为它是Ajax调用的一部分。

所以,我想做的是在Ajax响应上放置一个监听器,并寻找302或者位置的变化。但是,我找不到使用jsf.ajax.addOnEvent的方法。似乎Primefaces没有使用标准的JSF Ajax调用。我查看了AjaxStatus,但它给我的只是事件,没有DATA,也没有访问数据。

我以为我可以查找用户已删除的JSESSIONID cookie,但是当我使用Javascript打印cookie时,会话ID不会被打印。

所以,我似乎无法在会话过滤器中执行response.sendRedirect,因为我正处于Ajax调用之中。我无法在客户端上检测到我需要重定向用户,如果我知道这是必需的,我可以这样做。我似乎无法从Primefaces Ajax响应中获得任何信息。

1 个答案:

答案 0 :(得分:0)

按菜单你的意思是p:menuItem组件,对吧?假设您正在使用action属性来调用托管中的方法,请尝试使用属性ajax =“false”。我用它,它对我很有用。