2009-07-09 2 views
5

からのステータスが、私はいくつかのエラーチェックを行うサーブレットを持っているし、何かが間違っている場合、私はこれを行う一般的になります。 はhttpServletResponse.sendError表示する最も簡単な方法は何である(403、「マイメッセージ」)JSTL

response.sendError(403, "My message") 
return; 

I do notサーブレットから例外をスローしたい - HTTPステータスコードに準拠したいからです。

は、web.xmlで、私は次のように構成されている:私は、JSTLの使用を宣言しているfailure.jspで

<error-page> 
    <error-code>403</error-code> 
    <location>/failure.jsp</location> 
</error-page> 

と私は表示されたエラーメッセージを取得したいと思います。

 
<%= request.getAttribute("javax.servlet.error.message") %> 

しかし、私はいくつかのCとJSTLを使用したい:私は、スクリプトレットで次の操作を行うことができることを知って、私はこれが理解されるだろう、スクリプトレットを使用してドロップすることができますので、もしif節。

JSTLを使用してエラーページのサーブレット内のsendErrorステートメントから値を簡単に取得できますか?

答えて

10

スクリプトレット:

<%= request.getAttribute("javax.servlet.error.message") %> 

は、次のELに変換することができます:あなたはMapでドットを持っているか、キー名をスコープの場合

${requestScope['javax.servlet.error.message']} 

ブレース表記bean['foo.bar']は非常に便利です、 bean.foo.barは明らかに希望のMapまたは有効範囲の値を返さないためです。

0

属性 "var"を持つJSTLタグを宣言します。これは、stackTraceプロパティとmessageプロパティを持つタグの最後に例外オブジェクト(タグの本体間にエラーが発生した場合)を持ちます。

<c:catch var="myException"> 
<%int x=10/0; %> 
</c:catch> 

<c:if test="${myException !=null}"> 
There was an exception: ${myException.message} 
</c:if> 
+1

これは機能しません。 JSPページは例外を検出しません。web.xmlにエラーページとして設定されています。このシナリオでは例外はリクエスト内の属性ですが、キーはかなり扱いにくいので、JSTLからキーを参照する方法がわかりません。 – tronda

関連する問題