2014-01-15 33 views
1

我有一個REST服務:錯誤與空Double PathParam

@POST 
@Path("/shop/{prodID}/{price}") 
public Response updatePrice(@PathParam("prodID") Long prodID, @PathParam("price") Double price) { 
     priceDAO.updatePrice(prodID, price); 
     return Response.ok().build(); 
} 

如果我對他們工作的重大UI發號,但如果發送空參數(空)我有錯誤:

sitesurl/shop/33/null 404 Not Found 

Class java.lang.Double can not be instantiated using a constructor with a single String argument 

在控制檯上。

如果以空字符串(「null」)發送,我們可以看到NumberFormatException。

爲什麼我的服務無法解析可空PathParam?

+0

如果你根本沒有任何東西會發生什麼? (另請注意,對於更新,您應該將價格作爲表單元素而不是路徑參數。) – chrylis

+0

我在更新任何單元格表格網格後發送請求。例如,我有一個網格與prodName,其他列,價格 - 用戶編輯prod與ID 33的價格,我發送和更新此產品的唯一價格。我有任何網格列的服務:updatePrice,updateName,updateLocation等... – Gene

回答

0

chrylis,如果你不提供任何路徑PARAMS它會拋出一個404資源沒有找到,

我Chrylis形式PARAM同意將是一個不錯的主意。 基因,那麼你應該確保在發送請求路徑時params不爲空並且符合資源規範。對於長或雙重字符串不應發送。 擺脫的另一種方法是將資源規範保留爲字符串,並手動投射到Long等。 有辦法很好地處理ParamExcption。創建一個映射器,實現ExceptionMapper並拋出自定義響應