1

問題があります。JSF アプリケーション全体が Ajax Requests に基づいています。

すべてのリクエストとすべてを Ajax を使用して行います

問題は、セッションがタイムアウトし、ユーザーがページで何かをしようとしても、何もしないことです。

セッションがタイムアウトしたことはわかっていますが、それをキャッチできませんでした。いくつかの試行の後、最終的に、各リクエストの後にセッションがタイムアウトになったときにキャッチできます。しかし、今の問題は、フィルターまたはマネージドBeanから、またはjsを使用して、ユーザーをログイン画面に再度リダイレクトすることです

ユーザーをログイン画面にリダイレクトする方法を誰か教えてください

また、アプリケーションには 3 つのページがあることにも注意してください。ログイン、インデックス、ログアウトのみで、すべてがインデックス ページにあります。

前もって感謝します

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 に答える