Primefaces 3.5 で Websphere Portal 8 を使用しています。要件は、セッションがタイムアウトしたときに、クリックするとログイン ページに戻るボタンがあるセッション タイムアウト ページにユーザーをリダイレクトすることです。ログイン ページには、[セッション タイムアウト] ページと同様にポートレットが含まれています。どちらも同じポートレット アプリケーション内にあります。ImplicitLogoutFilter を使用して、セッション タイムアウト ページに正常にリダイレクトしています。
@Override
public void logout(HttpServletRequest request, HttpServletResponse response, FilterChainContext filterContext, LogoutFilterChain chain) throws LogoutException, LoginException {
chain.logout(request, response, filterContext);
if (filterContext.getRedirectURL() != null) {
if (logger.isLoggable(Level.FINEST)) {
logger.logp(Level.FINEST, CLASS_NAME, MethodName.LOGOUT, "Redirecting to session timeout page: " + SESSION_TIMEOUT_PAGE_URL);
}
filterContext.setRedirectURL(SESSION_TIMEOUT_PAGE_URL);
}
}
セッション タイムアウト ページのポートレットには、ログイン ページにリダイレクトするポートレット アクションを呼び出すボタンが含まれています。
public void navigateToPortalPage(String pageUniqueName) throws RpmPortalException {
final String methodName = "navigateToPortalPage";
RpmPortalPage portalPage = getNavigationManager().getPortalPage(pageUniqueName, getPortletRequest(), getPortletResponse());
try {
FacesContext context = getFacesContext();
if (context != null) {
context.getExternalContext().redirect(portalPage.getUrl());
context.responseComplete();
}
} catch (IOException e) {
RpmExceptionUtils.logAndThrowException(CLASSNAME, methodName + "(" + pageUniqueName + ")", RpmErrorCode.RPM_CONFIG_00004, getLoggedinUser(), e);
}
}
ただし、ログイン ページに移動する代わりにボタンをクリックすると、代わりに ViewExpired 例外がスローされます。この例外は、例外を処理する例外ハンドラーによって処理され、エラー ページにリダイレクトされ、ユーザーにエラーが表示されます。
私の質問は、セッションの有効期限が切れた後に ViewExpiredException を回避する方法です。この場合、ViewExpiredException が発生することなくログイン ページにリダイレクトできるようにするだけです
よろしくお願いいたします。