です。私はそれが最高か最も簡単かどうか分からないが、それは働く。私は、次のStrutsにException Configuration guideを見つけて、コメントを追加私の<package>
struts.xml
内側:
<global-results>
<result name="exception">/exception.jsp</result>
</global-results>
<global-exception-mappings>
<exception-mapping exception="java.lang.Exception" result="exception" />
</global-exception-mappings>
これは/exception.jsp
にリダイレクトされるすべての未処理の例外が発生します。そして、ここにJSPの内容は次のとおりです。
<%@ taglib prefix="s" uri="/struts-tags" %>
<%@ page contentType="application/json; charset=UTF-8" %>
<% response.setStatus(500); %>
{"success": false,"errors": "<s:property value="%{exception.message}"/>"}
あなたは私が手動でこれは私に新しい問題を与えた500
に応答コードを設定する第三行に注意しましょう:例外は、これ以上記録されていませんでした。前述のStrutsのガイドで示唆したように、私もstruts.xml
の私<package>
に以下を追加することで、これを解決:
<interceptors>
<interceptor-stack name="appDefaultStack">
<interceptor-ref name="defaultStack">
<param name="exception.logEnabled">true</param>
<param name="exception.logLevel">ERROR</param>
</interceptor-ref>
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="appDefaultStack" />
のStruts:このような単純なと明白な機能ではありませんデフォルトを作るための-1、および他の-1ソリューションをあまりにも鈍くするためです。
クライアント側ライブラリはExtJSですが、それは問題ではありません。サーバーが問題を抱えています。サーバー側に未処理の例外があると、StrutsはHTMLエラーレポートと "200 OK"ステータスコードを送信します。これが私が修正しようとしているものです。私が扱うことができるHTMLですが、Strutsはコード200ではなく、エラーが発生したときにコード500を送信できるようにしなければなりません。ありがとう! – curtisdf
'WebApplicationException()によってHTTP 500エラーコードが発生します。あなたはこれを投げてみましたか? – tusar
サーバー側では、どこにでもtry/catchブロックを挿入する必要はありません。 Strutsに「Right Thing(tm)を実行して、これらのばかげた問題報告を送信するたびに500応答コードを渡すように指示する何らかの設定が必要です」 – curtisdf