2016-08-11 5 views
0
  • RESTサービスのi18n(国際化とローカリゼーション)タスクに取り組んでいます。今度は、Acceptのときにスローされた例外、またはヘッダーの Content-Typeが@Producesおよび @Consumesと一致しないときにスローされた例外へのヘッダーの Accept-Languageに従ってエラーメッセージを渡します。
  • 私はContainerRequestFilterで解決策を見つけましたが、私はそれは私が欲しい のMediaTypeにマッチしていないとき、@Producesを使用する必要がなくなる受け入れ、その ContainerRequestFilterとスロー例外でヘッダのContent-Typeのチェック 場合リソース内の@Consumeをもう一度入力してください。
  • 私の質問は、 @Producesと@Consumesが (私はNotAcceptableExceptionとNotSupportedExceptionを意味する)に違反しているときにスローされる例外をカスタマイズする方法があるかどうかです。 これらの例外のメッセージでは、複数の言語でエラーメッセージを メッセージに渡したいとします。

答えて

0

ExceptionMapperを使用して、サービスでスローされた例外をキャッチし、返信形式の応答を返すことができます。特定の例外を処理するようにカスタマイズすることができます。

@Provider 
@Singleton 
public class ExceptionMapperProvider implements ExceptionMapper<Exception> { 

    @Override 
    public Response toResponse(final Exception exception){ 
     return Response.status(HttpStatusCodes.STATUS_CODE_SERVER_ERROR).entity(new BasicResponse(InternalStatus.UNHANDLED_EXCEPTION, exception.getMessage())).type(MediaType.APPLICATION_JSON).build(); 
    } 
} 
+0

うん、私はExceptionMapperを知っているが、その後私は再びExceptionMapperに言語バンドルを選択したResourceBundleを宣言した後、言語を受け入れ、取得する@Context HttpHeadersを宣言する必要があります。 ExceptionMapperをもう1つ持っているなら、もう一度やり直す必要があります。 – vunguyenhung

関連する問題