[Seasar-user:2725] [S2JSF] ErrorPageManagerImpl で無限呼出し発生

O.K.U. oku
2005年 10月 20日 (木) 18:40:03 JST


O.K.U.です。毎度お世話になっております。

早速ですが、org.seasar.jsf.runtime.ErrorPageManagerImpl を使って、
javax.faces.FacesException 発生時に画面遷移させようと、
jsfErrorPage.dicon に記述すると、javax.faces.el.EvaluationException 発生時に
無限呼び出し状態になります。

少しソースを追ってみたところ、
javax.faces.el.EvaluationException が発生した場合、
org.seasar.jsf.runtime.ErrorPageManagerImpl.handleException() の中の
getLocation() は そのスーパークラスの例外である javax.faces.FacesException に
対応した location を見つけます(dicon に記述したもの)。
location が見つかったときは、extContext.dispatch(location) を起動しますが、
この中の動作で org.seasar.jsf.application.ActionListenerImpl.processAction()
が呼ばれ、そこで例外が javax.faces.el.EvaluationException であれば、
この中の catch (EvaluationException ex) {...} の中で再び
ErrorPageManagerImpl.handleException()を呼び出してしまいます。
すなわち、

  [1] →ErrorPageManagerImpl.handleException()
 →ActionListenerImpl.processAction()→[1]

が無限に繰り返されてしまいます。
このような例外であっても指定したページに遷移できるようになると嬉しいです。



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