好的,所以这是我今天一直在努力解决的棘手问题。首先是我的控制器:
@RequestMapping(value = "/batch/{itemIds:(?:[0-9]+[,]?)+}", method = RequestMethod.DELETE)
public void batchDeleteItem(
@PathVariable String itemIds,
Principal principal,
HttpServletResponse httpServletResponse) throws CustomException {
for (String itemIdString: itemIdString.split(",")) {
long
itemId = Long.parseLong(itemIdString.trim());
itemService.deleteItem(principal.getName(), itemId);
}
httpServletResponse.setStatus(HttpServletResponse.SC_ACCEPTED);
}
如果不明显,想法是在一次调用控制器时删除一堆项目。上述方法适用于大约5项,但是当指定6+项时,呼叫超时。我把记录器语句放在控制器代码中,它们甚至都不打印!换句话说,
WORKS:
TIMES OUT:
有什么想法吗?提前谢谢!
更新:
现在,我正在通过让客户端指定请求的CSV格式主体(而不是URL本身)来解决此问题。不幸的是,这意味着使用HTTP PUT而不是HTTP DELETE。如果有人能弄清楚发生了什么,我仍会把这个问题保持开放。