私たちのプロジェクトでは、このブログで説明されているように、 OmniFacesFullAjaxExceptionHandler
とともに PrimeFaces 3.3 を使用しています。
load()
PrimeFaces を拡張するクラスのメソッドの実装における例外を除いて、すべての Ajax 呼び出しで非常にうまく機能しますLazyDataModel
。メソッドで例外がスローされた後、クラスのメソッドのload()
反復子に表示されません。handleAjaxException()
FullAjaxExceptionHandler
Iterator<ExceptionQueuedEvent> unhandledExceptionQueuedEvents = getUnhandledExceptionQueuedEvents().iterator();
Ajax 呼び出しでスローされる他のすべての例外は、イテレーターで終了します。
スタック トレースを比較したところ、それがわかりました。PrimeFaces 遅延読み込みを使用すると、スタック トレースは、レンダリング レスポンス フェーズ中に発生したことを示しています。
at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:391)
at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:131)
at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:121)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:594)
アプリケーションの呼び出し段階で非遅延読み込みエラーが発生します。
at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:794)
at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1259)
at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:593)
次の質問があります。
FullAjaxExceptionHandler
ライフサイクルの後半にスローされたために例外をキャッチしない理由はありますか?- それはPrimeFacesのバグですか?