私はこれらのテクノロジに不慣れで、次のフレームワークを使用してアプリケーションを開発しています。
- ストラット 2
- 春 3
すべてのビジネス ロジックを Spring で実装しているため、例外が発生した場合にカスタム メッセージをエンド ユーザーに表示します。
これらのテクノロジで例外処理機能を開発する方法を教えてください。
私の理解によると、最良のアプローチは、ビジネスレイヤーに対していくつかの定義済みの例外を定義し、これらの例外をアクションクラスにスローすることです。
S2 は、これらの例外を処理してユーザーに表示する方法をいくつか提供します。
Struts 2 フレームワークを使用すると、フレームワークがキャッチされなかった例外を処理する方法を struts.xml で指定できます。処理ロジックは、すべてのアクション (グローバル例外処理) または特定のアクションに適用できます。まず、グローバル例外処理を有効にする方法について説明しましょう。
<global-exception-mappings>
<exception-mapping exception="org.apache.struts.register.exceptions.SecurityBreachException" result="securityerror" />
<exception-mapping exception="java.lang.Exception" result="error" />
</global-exception-mappings>
<global-results>
<result name="securityerror">/securityerror.jsp</result>
<result name="error">/error.jsp</result>
</global-results>
細かいレベルの制御が必要な場合でも、アクションごとに例外処理を自由に構成できます
<action name="actionspecificexception" class="org.apache.struts.register.action.Register" method="throwSecurityException">
<exception-mapping exception="org.apache.struts.register.exceptions.SecurityBreachException"
result="login" />
<result>/register.jsp</result>
<result name="login">/login.jsp</result>
</action>
それらをどのように構成するかはあなたの好みです。詳細については、ドキュメントを参照してください
Value-Stackから例外の詳細にアクセスするオプションもあります。デフォルトでExceptionMappingInterceptor
は、次の値が Value Stack に追加されます。
JSPでこれらのオブジェクトにアクセスする方法は次のとおりです
<s:property value="%{exception.message}"/>
<s:property value="%{exceptionStack}"/>
詳しくは詳細へ