2016-10-31 11 views
2

this siteから例外を管理するためのチュートが見つかりました。例外ハンドラにデータを渡すにはどうすればよいですか?

@Controller 
@RequestMapping("/adminrole") 
public class AdminRole { 

    ... 

    @ExceptionHandler({org.hibernate.exception.ConstraintViolationException.class}) 
    public ModelAndView handlePkDeletionException(Exception ex) { 

     ModelAndView model = new ModelAndView("errorPage"); 

     model.addObject("message", "customised message with data to display in error page"); 

     return model; 

    } 

} 

は、今私は、エラーページでカスタマイズしたメッセージを表示するためにハンドラに、例外を発生させ、たとえば、主キーの列名をいくつかのデータを渡したい:だからここに私のハンドラです。どのようにハンドラにそれらのデータを渡すのですか? @ExceptionHandler方法に独自のデータを渡すために

答えて

5

、あなたはサービス層でframework exceptionsをキャッチし、追加データをラップすることによって、独自のcustom exceptionをスローする必要があります。

サービス層:

public class MyAdminRoleService { 
    public X insert(AdminRole adminRole) { 
     try { 
      //code 
     } catch(ConstraintViolationException exe) { 
      //set customdata from exception 
      throw new BusinessException(customdata); 
     } 
    } 
} 

コントローラー層:

@Controller 
@RequestMapping("/adminrole") 
public class AdminRole { 

    @ExceptionHandler({com.myproject.BusinessException.class}) 
     public ModelAndView handlePkDeletionException(BusinessException ex) { 
      String errorMessage = ex.getErrorMessage(); 
      ModelAndView model = new ModelAndView("errorPage"); 

      model.addObject("message", errorMessage); 

      return model; 

     } 
    } 

PS:私は一例としてConstraintViolationExceptionをとっているが、あなたはすべてのために同じ概念を適用することができます追加データを追加したいフレームワークの例外です。

関連する問題