5

私はジャージの第一人者ではありませんが、ジャージはクエリパラメータに基づいてJavaメソッドを解決できないことを読みましたが、時々解決するように見えます。これが私の例です。

これはサーバーコードです:

@GET
@Path("/services")
public String getAll(
        @QueryParam("limit") Integer limit,
        @QueryParam("offset") Integer offset){
        return "1 2 3";
}

そしてこれはクライアントコードです:

ClientResponse response = webResource
        .path("services")
        .queryParam("limit", "ab")
        .get(ClientResponse.class);
logger.info(response.toString());
assertEquals(response.getStatus(), 200);

ジャージは「ab」が好きではなく、クエリパラメータをマップできないため、404が返されるようですが、limit = "1"の場合、適切なメソッドを実行できます。

この場合、ジャージは404を返す権利がありますか?、整数ではなく文字列を使用してインターフェイスを拡張し、実行可能なsintaxエラーのすべての処理をオーバーライドできることを知っています。私に代わってこれを行うようにジャージを構成できますか?

私はサーバーを使用しています:grizzly / 1.9.18、ジャージ1.11

ありがとう!

4

1 に答える 1

3

現在、これはジャージーでは不可能です。これをより使いやすくするための機能を考え出すことができるかもしれません。パラメータにアタッチできる @ErrorParam アノテーションのようなものはどうでしょうか。そのようなパラメーターが存在し、一部の QueryParam 変換が失敗した場合、クエリ パラメーターには既定値が入力され、エラーのパラメーターの実際の文字列値は、@ErrorParam? で注釈が付けられたパラメーターで渡される名前と値のマップに追加されます。

@GET
@Path("/services")
public String getAll(
        @QueryParam("limit") Integer limit,
        @QueryParam("offset") Integer offset,
        @ErrorParam MultivaluedMap<String, String> typeErrors) {

    if (!typeErrors.isEmpty()) {
        // do something
    }

    return "1 2 3";
}

ここで RFE を提出しました: http://java.net/jira/browse/JERSEY-1263

ご意見ありましたらコメントください。

于 2012-06-29T09:36:38.300 に答える