Annotation Interface OnErrors


リクエストハンドラが例外を送出した場合のレスポンスを指定するInterceptor
 このInterceptorは、複数例外に対してレスポンスを指定したい場合に使用する。
 
 次の例では、"ApplicationException"が送出された場合の遷移先を入力画面(inputForm.jsp)、
 "OptimisticLockException"が送出された場合の遷移先を業務トップ画面(topForm.jsp)、に設定している。
 
 @OnErrors ({
      @OnError (type = OptimisticLockException.class, path ="servlet://topForm.jsp"),
      @OnError (type = ApplicationException.class, path ="servlet://inputForm.jsp")
 })
 public HttpResponse handle(HttpRequest req, ExecutionContext ctx) {
     updateUser(req.getParamMap());
     return new HttpResponse(200, "servlet://updatingCompleted.jsp");
 }
  
 この処理は、以下のコードによる処理と本質的に同等である。
  
 public HttpResponse handle(HttpRequest req, ExecutionContext ctx) {
     try {
         updateUser(req.getParamMap());
         return new HttpResponse(200, "servlet://updatingCompleted.jsp");
     } catch(OptimisticLockException ole) {
         throw new HttpErrorResponse(400, "servlet://topForm.jsp", ole);
     } catch(ApplicationException ae) {
         throw new HttpErrorResponse(400, "servlet://inputForm.jsp", ae);
     }
 }
 
 OnErrorsアノテーションは、OnErrorアノテーションの定義順(上から順)に例外を処理する。
 たとえば、上記の例では、OptimisticLockExceptionはApplicationExceptionのサブクラスなので、
 必ずApplicationExceptionの上に定義しなければ正常に処理が行われない。
 
  • Nested Class Summary

    Nested Classes
    Modifier and Type
    Class
    Description
    static class 
    OnErrorsインターセプタの実装。
  • Required Element Summary

    Required Elements
    Modifier and Type
    Required Element
    Description
    このインターセプタがハンドリングするOnErrorアノテーション。 (必須属性)
  • Element Details

    • value

      OnError[] value
      このインターセプタがハンドリングするOnErrorアノテーション。 (必須属性)