5

単純なSpring3ベースのReSTWebサービスで例外処理を機能させようとしています。私が見たすべてに基づいて、これが@ResponseBodyおよび@ExceptionHandlerアノテーションで自動的に機能するのを妨げるバグがあります

https://jira.springsource.org/browse/SPR-6902

Spring 3.1または3.0.6までサポートされていないことを考えると、例外処理を行うための現在の最良の方法は何ですか?私は多くの投稿を見てきましたが、私にとって有効な明確な答えを見つけられませんでした。理想的なソリューションは、xmlとjsonの両方を自動的にサポートするソリューションです。

  • マーシャリング設定全体を手動で定義する必要がありますか?これにより、Spring 3の残りのサポートを使用する価値のある注釈の必要性がなくなりませんか?
  • マーシャリング(つまり、Jaxb2Marshaller)を手動で定義するために、spring-wsへの新しい依存関係を追加する必要があるようです。これは少し面倒です。
  • すべてのメソッドが返す「Response」オブジェクトを定義して、すべての関数をtry / catchブロックにラップする方が簡単ですか?
4

2 に答える 2

7

エラー時にリダイレクトしてから、次の場所に何かを返すことができます@ResponseBody

@ExceptionHandler(Exception.class)
public ModelAndView handleMyException(Exception  exception) {
    return new ModelAndView("redirect:errorMessage?error="+exception.getMessage());
} 

@RequestMapping(value="/errorMessage", method=RequestMethod.GET)
@Responsebody
public String handleMyExceptionOnRedirect(@RequestParameter("error") String error) {
    return error;
} 

少し醜いですが、修正が利用可能になるまでこれは回避策です。

于 2011-06-07T16:38:16.600 に答える
0

これは良い回避策ですが、1つ追加されています。@ExceptionHandler (Exception.class)@ExceptionHandler(MyException.class、YourException.class)である必要があります。これは、一般的なExceptionクラスを使用してループに入ることができるためです。

次に、(Myexceptionのインスタンスを除く)をテストして、必要に応じて表示するメッセージを決定できます。

于 2011-06-10T19:17:57.543 に答える