我非常絕望和厭倦。 我的問題如下: 我爲我正在爲學校工作的一個項目創建了一個REST服務。在那裏我有幾個請求,它們根據路徑變量與我的數據庫進行交互。美中不足的是,我不能要求的東西超過9價值爲進一步說明,我的意思,我已經複製下面的代碼片段:Java REST - 當超過值時,路徑變量會導致404 12
@GET
@Path("/Child/{Child: \\d+}")
@Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
public Response Child(@PathParam ("Child")int child) throws IOException{
DAO dao = new DAO();
List<Child> Child;
try{
Child = dao.Child(child);
ResponseBuilder rb = Response.ok();
rb.entity(new GenericEntity<List<Child>>(Child) {});
return rb.build();
}catch(Exception e){
ResponseBuilder rp = Response.status(404);
return rp.build();
}
}
而是與匹配的索引返回Child對象(它存在,我已經多次查看,如果我真的不只是忽視這個顯而易見的話),它會返回一個404代碼。它甚至沒有捕獲異常,因爲我已經更改了響應代碼,並且它仍然返回相同的結果。我也試圖自定義變量(如上面用\ d +所看到的那樣,還有各種其他表達式,但它們都沒有工作)。我在網上搜索了答案,但沒有找到答案能夠幫助我。如果需要更多信息,我很樂意提供。
只是要清楚,如果ID是超過9它返回404.不是嗎? –
如果刪除param中冒號後的空格是否有任何變化?另外,哪個容器和JAXRS庫是這樣的(假設這是你正在使用的? –
嘗試用'[0-9] +'替換正則表達式'\\ d +',以防萬一。 – streetturtle