2016-12-02 7 views
1

私はこの問題を持っているJax.rs:オブジェクトの長さゼロの表現は何ですか?私たちは、このようなJAX.RS APIを持って</p> <p>:

@GET 
@Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML}) 
@Path("get") 
public User get(@QueryParam(value = "id") String identifier) { 
    return toUser(getUserEntry(identifier)); 
} 

TOUSER()メソッドは、実際にクライアントが204を見ることを意味し、nullを返すことができます - はありませんコンテンツレスポンス

私のコードは次のようになりますさて、クライアント側で:

getWebTarget("user") 
      .path("get") 
      .queryParam("id", identifier) 
      .request(getMediaType()) 
      .get() 
      .readEntity(SsoUser.class); 

私は例外のいくつかの種類をスローする)(readEntityを期待していたが、それは実際にはnullを返し、文句はありません。

documentationを見ると、私はこの参照:長さゼロの応答エンティティの

はゼロ長データを表す対応するJavaオブジェクトを返します。 Javaタイプに長さゼロの表現が定義されていない場合、基になるNoContentExceptionをラッピングするProcessingExceptionがスローされます。

私のUserクラスでは、「長さゼロの表現」が定義されているようです。しかし、私はこの表現が何を意味するのかドキュメンテーションのどこにも見つけることができません。

Java が長さゼロの表現がnullであると推測する方法を理解できますが、定義する場所がわかりません。

これについての洞察はありますか?

答えて

-1

私はこれについて間違っているかもしれませんが、私はJax-RSがあなたのために値nullを扱うことはできないと思います。あなたができることは、その事件を明示的に処理することです。

@GET 
@Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML}) 
@Path("get") 
public Response get(@QueryParam(value = "id") String identifier) { 
    User maybeNull = toUser(getUserEntry(identifier)); 
    Response response = null; 
    if(null == maybeNull) { 
     response = Response.noContent().build(); 
    } else {  
     response = Response.ok(maybeNull).build(); 
    } 
    return response; 
} 
関連する問題