ViewExpiredExceptionを持つWebsphere Process Server(WAS 7の上)にJSFページがあります。ViewExpiredExceptionのためログアウトした後に2回ログインする必要があります
、ログインにリダイレクト<%
session.invalidate();
response.sendRedirect("ibm_security_logout?logoutExitPage=/faces/ToDosOpen.jsp");
%>
:この問題が発生したとき、私は、ユーザーがログアウトしてから、私は、次のログアウトページにweb.xmlにこの例外にリダイレクトを設定している にバックログに記録しますページ:
<%@ page import="com.ibm.wbit.tel.client.jsf.infrastructure.Messages, java.util.Locale" language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<%
String contextPath = request.getContextPath();
Locale locale = request.getLocale();
final String SECURITY_CHECK = "j_security_check";
%>
...
</head>
<body>
...
<h1><%= Messages.getString("LOGIN_LINE", locale) %></h1>
<div class="help-text"><%= Messages.getString("LOGIN_LINE_DESCR", locale) %></div>
<form target="_top" method="POST" action=<%= SECURITY_CHECK %>>
<table id="login-form">
<tr>
<td><%= Messages.getString("LOGIN_NAME", locale) %>:</td>
<td><input type="text" name="j_username"></td>
</tr>
<tr>
<td><%= Messages.getString("LOGIN_PASSWORD", locale) %>:</td>
<td><input type="password" name="j_password"></td>
</tr>
<tr>
<td id="login-button" colspan="2">
<input type="submit" name="login" value="
<%= Messages.getString("BUTTON_LOGIN", locale) %>"></td>
</tr>
</table>
</form>
ログインすると、最初に例外が発生したページにリダイレクトされます。実際に何が起こるかを除き、例外が再びスローされ、ログインページに戻ります。
これで2回ログインする必要があります。
これについての対処方法や見た目の開始位置が不明です。どんな助けもありがとう。 私はこれに関する既存の質問を見てきましたが、解決できませんでした。
編集:私は、これは例外をトリガしたアクションがリフレッシュした場合は正常に動作しますが、アクションはコマンドバーをクリックした場合(2回ログインする必要が)失敗したことを言及するのを忘れました。
だから私はちょうどViewExpiredExceptionをキャッチして、正しいコンテキストとビューIDを渡すrestoreViewメソッドを呼び出す必要がありますか?またはそれを使用する特別な場所がありますか? – rsb2097
私の解決策は、ViewExpiredExceptionのためのViewHandlerを作成し、そこでrestoreViewを呼び出すことでした。それはそれを使用する特別な場所です。 "restoreView"メソッドはViewHandler自体からのものです( "super"に気付く)ので、ビューハンドラ以外でどこから呼び出すことができるかわかりません。 JSFライフサイクルのすべての段階でこれを実行することはできませんが、具体的にどの段階でこれを許可しているかはわかりません。ハンドラは、フェーズが良好であるようにリストアビューフェーズで呼び出され、他のフェーズは実行されません。 –
それを試みるつもりです。ありがとう! – rsb2097