会话超时后,JSF 2 ajax按钮不会进行服务器调用

时间:2011-04-25 21:23:46

标签: ajax jsf-2

我的应用程序正在使用RSA authentication manager

进行身份验证

用户登录后,将从请求标头中检索其登录的用户标识,从LDAP查找确定角色。然后,JSF2应用程序使用此角色来显示页面上的某些部分以及其他授权相关区域。

(注意:代替RSA,这也可以使用Tivoli)。

应用程序超时由web.xml会话超时值控制,该值目前设置为30分钟。并且RSA超时设置为2分钟(用于测试)。当RSA会话在应用程序会话之前到期,并且用户执行任何服务器操作(如按钮单击)时,RSA会自动将用户转发回登录页面。 它工作正常。

我在应用程序的某些按钮中添加了ajax功能,使用以下f:ajax标记

< h:commandLink id =“todayOrdersLink”value =“someValue”           行动= “#{someAction}”                 onclick =“clearAllElementsInHiddenDivs('confirmationSearch');> < f:ajax execute =”@ form“onevent =”showWorkingIndicator“/> < / h:commandLink>

现在当RSA会话到期并且我点击这样一个按钮时,服务器调用不是由按钮进行的​​,而是显示javascript弹出说错误的XML:文档为空。

但是,如果我单击F5按钮或浏览器刷新按钮强制服务器调用,则转发到登录页面的早期行为仍然有效。在RSA会话到期后,我必须以某种方式从ajaxified按钮进行服务器调用。

任何帮助都将得到帮助。

1 个答案:

答案 0 :(得分:2)

这是因为视图不再存在且服务器无法在服务器上重新创建视图以执行ajax,您可以尝试这样的事情:

var onError = function onError() {
   window.location = 'http://domain.com/loginPage.jsf';
 };
jsf.ajax.addOnError(onError);