[Seasar-user:3119] [S2JSF] ページの初期化処理で無限ループ発生

松山 大樹 t.matsuyama
2006年 1月 25日 (水) 15:34:54 JST


 松山です。

 [Seasar-user:2725] [S2JSF] ErrorPageManagerImpl で無限呼出し発生 で、
O.K.U. さんが報告されているのと、似たような現象ですが、ページの初期化
処理で無限ループが発生して困っています。

 s2jsf-example では、完全に再現ができないのですが、次のような感じ
です。

 1. EmployeeSearchInitActionImpl#initialize を、以下のように変更.
    ----------------------------------------------------------------
	public String initialize() {
		System.out.println("初期化処理");
		if(1 == 1) {
			return "errorPage";
		}
		departmentDtoList = employeeLogic.getAllDepartments();
		return null;
	}
    ----------------------------------------------------------------

 2.faces-config.xml に、以下を追加
    ----------------------------------------------------------------
	<navigation-rule>
		<navigation-case>
			<from-outcome>errorPage</from-outcome>
			<to-view-id>/employee/errorPage.html</to-view-id>
			<redirect/>
		</navigation-case>
	</navigation-rule>
    ----------------------------------------------------------------

 3. /employee/errorPage.html を作ります。中身はなんでもいいです。

 この状態で、メニューからEmployee Management をクリックすると、
EmployeeSearchInitActionImpl#initialize が2回実行されています。

 この2回実行されている現象が関係しているのかどうかはわかりませんが、
こちらの作成中のシステムだと、2回目に同じ処理(上の例だと、もう1度
Employee Management をクリックする)をすると、ページの初期化処理が
無限に実行されてしまいます。
 
 org.seasar.jsf.runtime.ErrorPageManagerImpl を使っていない理由は、
エラーログに余計なログを吐きたくないため(log4j で、ERROR の場合は
管理者へメールが送信される設定になっている)なのですが、
ためしに、org.seasar.jsf.runtime.ErrorPageManagerImpl を使った方法
にしてみると、1回めは正しくエラーページが表示されるのですが、
2回目以降はブラウザに例外情報が表示されてしまい、エラーページへ遷移
されません。

 ちょっと原因も回避方法もわからず困っているのですが、手がかりになる
ような情報があれば、教えていただけると大変助かります。

-- 
::: 株式会社ワウワウ・コミュニケーションズ http://www.wowcom.co.jp/
:::   ITシステム・インテグレートDiv.
:::  Web・マーケティング&コマンドセンターUnit.
:::   松山 大樹 - t.matsuyama @ wowcom.co.jp




Seasar-user メーリングリストの案内