1

我有一个问题,我的整个 JSF 应用程序都是基于 Ajax 请求的

我们使用 Ajax 处理所有请求

问题是当会话超时并且用户尝试在页面上做任何事情时它什么也不做。

我知道会话已超时,但我无法抓住它。经过一番尝试,我终于能够在每次请求后会话超时时捕捉到。但现在的问题是再次将用户从过滤器或托管 bean 重定向到登录屏幕,甚至使用 js

请任何人都可以告诉我如何将用户重定向到登录屏幕

还请记住,我的应用程序中有三个页面:登录和索引以及仅注销,所有内容都在索引页面中

提前致谢

4

1 回答 1

0

您可以使用类似的东西在超时过滤器中进行 ajax 重定向。你可以参考这个线程

String facesRequestHeader = httpServletRequest
        .getHeader( "Faces-Request" );

boolean isAjaxRequest = facesRequestHeader != null
        && facesRequestHeader.equals( "partial/ajax" );

if( isAjaxRequest )
{
        String url = MessageFormat.format( "{0}://{1}:{2,number,####0}{3}",
        request.getScheme(), request.getServerName(),
        request.getServerPort(), timeoutPath );

        PrintWriter pw = response.getWriter();
            pw.println( "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" );
        pw.println( "<partial-response><redirect url=\"" + url
        + "\"></redirect></partial-response>" );
        pw.flush(););
}
else
{
    httpServletResponse.sendRedirect( timeoutPath );
}
于 2012-10-24T12:54:20.833 回答