【发布时间】:2014-06-23 12:34:23
【问题描述】:
我使用类型为“DELETE”的 jquery ajax 发送我的请求。在服务器端,我有适当的句柄方法,如下所示:
@RequestMapping(value = "/{id}", method = RequestMethod.DELETE)
public String delete(@RequestParam("hotel") String hotelCode, @PathVariable Long id, Model model){
//delete operation
return "redirect:/HotelTaxesAndCharges?hotel="+hotelCode;
}
删除后我想将呼叫重定向到的方法如下所示
@RequestMapping(method = RequestMethod.GET)
public String getAll(@RequestParam("hotel") String hotelCode, Model model){
//logic
return 'getAll';
}
所以当我在执行期间调用 delete 方法时,我收到错误“您可以仅使用 GET PUT 或 HEAD 方法重定向到 JSP”。我找到了使用 HiddenHttpMethodFilter 的解决方案,但结果代码看起来有点乱,我需要使用 POST 发送请求并添加附加参数 (_method) 以请求自定义请求类型。
所以我的问题是 DELETE/REDIRECT/GET 转换是否有其他解决方案。
抱歉英语不好
更新
所以你也可以使用 delete 来重定向它。如果我将所有内容从删除更改为发布,我会得到:
【问题讨论】:
-
你从哪里得到错误?错误消息的具体外观如何?
-
@axtavt,我在重定向期间收到错误,错误消息现在看起来像“不支持请求方法'DELETE'”。而且我不知道如何将请求类型从删除转换为重定向。
-
如果我 POST 类型而不是 DELETE 一切正常
-
你能监视你的浏览器和你的服务器之间的对话吗(wireshark 很擅长)?我在精简控制器
@RequestMapping(value="/delete", method=RequestMethod.DELETE) public String delete(HttpServletRequest req) { return "redirect:/welcome"; }的以下方法中尝试了重定向,用DELETE方法调用它,然后......得到了正确的重定向响应。我认为问题不在于 spring-mvc(使用 spring 3.2.4 和 tomcat 7) -
@SergeBallesta,我添加了两个屏幕截图。首先,您可以在重定向过程中看到错误,因为结果方法请求类型 = GET。在第二个屏幕截图中,您可以看到如果我将删除更改为发布一切顺利,结果方法是 GET
标签: java spring-mvc