2012-06-28 41 views
3

我不是任何球衣大師,但我讀到球衣不能解決基於查詢參數的java方法,但它看起來有時它確實如此,這是我的例子。當球衣不能映射查詢參數時,404失敗,爲什麼呢?

這是服務器代碼:

@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,但是,如果限制=「1」,我可以擊中正確的方法。

在這種情況下,球衣是否有權返回404 ?,我知道我可以使用字符串而不是整數來覆蓋所有的治療方法,我可以配置球衣來代表我做這件事嗎?

我使用的服務器:灰熊/ 1.9.18,球衣1.11

謝謝!

回答

3

目前這在澤西島是不可能的。也許我們可以想出一個讓這更友好的功能。怎麼樣的@ErrorParam註釋你可以附加到參數。如果存在這樣的參數並且某些QueryParam轉換失敗,那麼將使用默認值填充查詢參數,並且將錯誤參數的實際字符串值添加到用@ErrorParam註釋的param中傳遞的名稱 - 值映射?

@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

請發表評論,如果您有意見。

+0

謝謝,這是正確的,我會期待它。 – user311174