Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JSF2Ajax按钮不会在会话超时后进行服务器调用_Ajax_Jsf 2 - Fatal编程技术网

JSF2Ajax按钮不会在会话超时后进行服务器调用

JSF2Ajax按钮不会在会话超时后进行服务器调用,ajax,jsf-2,Ajax,Jsf 2,我的应用程序正在使用 用户登录后,将从请求头检索其登录用户ID,角色由LDAP查找确定。然后这个角色被JSF2应用程序用来显示页面上的某些部分和其他授权相关的区域 (注意:也可以使用Tivoli代替RSA) 应用程序超时由web.xml会话超时值控制,该值当前设置为30分钟。RSA超时设置为2分钟(用于测试)。当RSA会话在应用程序会话之前过期,并且用户执行了任何服务器操作(如单击按钮)时,RSA会自动将用户转发回登录页面。 它工作得很好 在我使用以下f:ajax标记将ajax功能添加到应用程序

我的应用程序正在使用

用户登录后,将从请求头检索其登录用户ID,角色由LDAP查找确定。然后这个角色被JSF2应用程序用来显示页面上的某些部分和其他授权相关的区域

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

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

在我使用以下f:ajax标记将ajax功能添加到应用程序中的一些按钮之后

现在,当RSA会话到期时,我单击这样一个按钮,服务器调用不是由该按钮进行的,而是显示javascript弹出窗口,显示格式错误的XML:Document为空

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


将提供任何帮助。

这是因为视图不再存在,服务器无法在服务器上重新创建视图以执行ajax,您可以尝试以下操作:

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

很抱歉回复太晚,但我当时确实按照你的建议做了同样的事情。这很有效。谢谢你的回复。快速提问。你必须把这个放在所有ajax调用上,还是可以以某种方式放在全局范围内?你只需要在页面中包含一次,ajax引擎就会调用为每个可能的er定义的onError函数罗。