2011-01-05 11 views
2

エラーページが指定されたJSPページがあります。RequestDispatcherを使用してJSPページで例外を検出します。

RequestDispatcher rd = ctx.getRequestDispatcher(jspPage); 
rd.include(req, res); 

jspページがエラーページに転送されたかどうかを検出するにはどうすればよいですか?例外を異なる方法で処理したいが、例外はスローされない。残念ながら、JSPページ自体やエラーページを変更することはできません。

編集:

私はこのようなものは、()ライン、任意の考えの後に働くかもしれないと思っていますか?

Object errorServletName = req.getAttribute("javax.servlet.error.servlet_name"); 
if (errorServletName != null) 
{ there was an error in the JSP... } 
+0

正確にこれを検出しますか?与えられた例の 'include()'行の後ろに?なぜあなたのJSPは例外をスローしますか?これは[scriptlets ...]の使用を示しています(http://stackoverflow.com/questions/3177733/how-to-avoid-java-code-in-jsp-files)エラーページ?私。応答がすでにコミットされている間に例外をスローします。とにかく、 'web.xml'の' 'エントリを変更することが許されていますか?もしそうなら、それが答えです。 – BalusC

+0

この例では、include()行の後に検出したいと考えています。 JSPページにはerrorPageが指定されているため、例外が発生したときにerror.jspにキックオーバされます(通常は問題ありません)。しかし、include()行の後にres.getContents()を実行して、出力で他の処理を行う必要があります。エラーページの出力を特殊なケースとして処理する必要があるので、それがエラーページに転送されたかどうかを検出します。希望を明確にすること... –

答えて

0

web.xmlファイルにこの追加:あなたは、トレースプリントアウトや、彼らがerror.htmlページに経験がある問題についてユーザーに通知するのと同様の方法をスタックしていると仮定すると

<error-page> 
    <exception-type>java.lang.Throwable</exception-type> 
    <location>/error.html</location> 
</error-page> 

を。

関連する問題