0

私はこのページに書かれていることをしましたが、それでもこの問題を解決できませんでした。問題は、web.xml の変更がアプリケーションに影響しないことです。ところで、私は ExceptionHandler を使用しています (org.jboss.solder.exception.control.HandlesExceptions.HandlesExceptions アノテーションを使用して)。ExceptionHandler クラスにメソッドを追加しようとしましたが、FacesFileNotFoundException をインポートできませんでした。アプリケーションは FacesFileNotFoundException をスローしますが、ページに FacesFileNotFoundException 例外クラスをインポートできないのはなぜですか?

4

2 に答える 2

1

エラーページをweb.xmlに正しく追加する必要があります。完全な例外を配置する必要があり、例外がスローされたときにリダイレクトするターゲットの場所はxhtmlではなくhtmlである必要があります。これは非常に重要です。何かでなければなりませんこのような

<error-page>
    <exception-type>com.sun.faces.context.FacesFileNotFoundException</exception-type>
    <location>/pagenotfound.html</location>
</error-page>

私が知らないのは、例外をコンソールに表示しないようにする方法ですが、この方法で正常に動作します

于 2012-11-15T23:03:46.193 に答える
1

ExceptionHandler クラスにメソッドを追加しようとしましたが、FacesFileNotFoundException をインポートできませんでした。アプリケーションは FacesFileNotFoundException をスローしますが、ページに FacesFileNotFoundException 例外クラスをインポートできないのはなぜですか?

このcom.sun.*パッケージは、JSF 実装 Mojarra に固有です。明らかに、コンパイル時のクラスパスに JSF API JAR ファイルがありましたが、JSF 実装 JAR ファイルはありませんでした。

これは大きな問題ではありません。Web アプリケーションを特定の JSF 実装に依存させないようにする必要があります。実装固有のクラスのインポート/参照を避けるようにしてください。はFacesFileNotFoundExceptionから拡張されjava.io.FileNotFoundExceptionているため、代わりにそれをインポートすることをお勧めします。を開封することを忘れないでくださいFacesException。いくつかのヒントについては、OmniFacesFullAjaxExceptionHandlerおよびのソース コードも参照してくださいFacesExceptionFilter

Mojarra 固有のものをインポートする必要がありFacesFileNotFoundException、コードをコンパイルする必要がある場合は、JSF 実装 JAR ファイルをコンパイル時のクラスパスに追加する必要があります。正確な方法は、使用する IDE によって異なります。Eclipse では、 Build Pathで appserver から JSF 実装 JAR ファイルを参照する必要があります。

ExceptionHandlerデフォルトでは、JSF はのエラー ページ宣言に対して何もしないことに注意してくださいweb.xml

于 2012-11-16T11:49:02.507 に答える