2010-11-01 84 views
0

我有一個Java web服務,當沒有找到項目時,我想要返回一個空對象。相反,我回來了一個所有屬性設置爲null的實例。我可以檢查具有null屬性的項目,但希望項目返回爲null。有一個java web服務返回一個空的Web結果

@WebMethod 
@WebResult(name="item") 
public item findItem(
      @WebParam(name="Id") int Id){ 
    //... 
    if(ItemNotFound(Id)){ 
    return null; 
    } 
} 

在客戶端,wsItem不爲空

item wsItem=ws.findItem(1); 
if(wsItem==null){ 
    // this will not be hit 
} 

檢查項目屬性根據您所提供的信息在客戶端

item wsItem=ws.findItem(1); 
    if(wsItem.Property1==null){ 
     // this will 
    } 

回答

0

會的工作,我不明白你爲什麼不能簡單地做

if(item.getProperties() == null) 
    return null; 

編輯:
好吧,現在你已經更新了更多的代碼,我對發生了什麼有了更好的瞭解。你能設置一些斷點嗎?你確定ItemNotFound返回true,並且你實際上到達服務代碼中的return null行嗎?因爲我沒有看到new關鍵字在那裏的任何地方,一些額外的kooky將不得不繼續爲客戶端代碼負責。

編輯2:
我最初把這當成一個純Java問題,但根據你最新的評論,這是不正確的。聊天中指出,這可能與您的註釋或其他一些更廣泛的設置有關。

+0

對於開發者來說,if(item == null)代替它並非意識到返回無效,因爲它的所有屬性都爲null。 – Kenoyer130 2010-11-01 16:02:46

+1

爲了進一步闡述,web服務DOES返回null。消費者看到具有全部空屬性的實際項目。 – Kenoyer130 2010-11-01 16:05:01

+0

我不明白你想要什麼幫助。這是我迄今爲止的理解:您的服務獲得一個ID。如果存在具有該ID的項目,則返回該項目。如果沒有,你想返回'null',那就是你現在正在做的。你不想返回一個虛擬物品將'null'屬性。我瞭解情況錯了嗎?你在尋找客戶端代碼的幫助嗎? – Pops 2010-11-01 16:49:07