0

次のようにサービスでWebApplicationExceptionをスローすると、期待どおりの 404 応答コードが返されます

throw new WebApplicationException(Response.Status.NOT_FOUND);

ResponseBuilderを介して例外にもう少し情報を入力しようとすると、500 応答コードが返されます。これが私の拡張コードと返される応答メッセージです。

List<Error> errors = new ArrayList<>();
errors.add(new Error(ErrorCode.PDF_GENERATION_ERROR));
ErrorResponse errResponse = new ErrorResponse();
errResponse.setErrors(errors);
throw new WebApplicationException(Response.status(Response.Status.NOT_FOUND).entity(errResponse).build());

javax.ws.rs.WebApplicationException: com.sun.jersey.api.MessageException: Java クラス idexx.ordering.rest.common.types.ErrorResponse および Java 型クラス idexx.ordering.rest.common のメッセージ本文ライター.types.ErrorResponse、および MIME メディア タイプ application/octet-stream が見つかりませんでした

私の REST サービスには、次のメソッド シグネチャがあります。

@Produces("application/pdf")
@GET
@Path("/{id}")
public Response getPdfById(@PathParam("id") final Long id) {

とにかく、WebApplicationException をスローしたときに、追加のエラー コード情報を応答に入れることができますか?

4

1 に答える 1

0

これを試して:

String errResponse = "convert your errors to text";
throw new WebApplicationException(Response.status(Response.Status.NOT_FOUND).entity(errResponse).build());

JAX-RS は基本型を変換できるため、おそらくこれでうまくいくでしょうが、変換するList<Error>には、カスタム を登録する必要がありますMessageBodyWriter

于 2013-09-28T17:17:50.463 に答える