【发布时间】:2011-07-28 03:06:30
【问题描述】:
我在捕获发送到服务器的 PUT 请求时遇到问题。
这些是我的方法:
@RequestMapping(method= RequestMethod.GET)
public String getCity(@PathVariable(value="cid") String cid, @RequestParam(value="State") Integer state, Model model) {
System.out.println("get request");
return "index";
}
@RequestMapping(method= RequestMethod.PUT)
public String putCity(@PathVariable(value="cid") String cid, @RequestParam(value="State") Integer state, Model model) {
System.out.println("put request");
return "index";
}
当我跟踪调用时,我的 PUT 请求是由 GET 方法而不是由我的类中的 PUT 方法处理的。在屏幕外,它总是读作“get request”。我检查了浏览器日志并确认他们发送了正确的 PUT 请求,所以我认为我在这里错过了一些 Spring 配置,但我不知道它是什么..
有人可以帮忙吗?
谢谢。
编辑:带类的附加代码:
@Controller
@RequestMapping(value="/retail/{cid}/master/city")
public class City {
@RequestMapping(value="/foo1", method= RequestMethod.GET)
public String getCity(@PathVariable(value="cid") String cid, @RequestParam(value="State") Integer state, Model model) {
System.out.println("get request");
return "index";
}
@RequestMapping(value="/foo2", method= RequestMethod.PUT)
public String putCity(@PathVariable(value="cid") String cid, @RequestParam(value="State") Integer state, Model model) {
System.out.println("put request");
return "index";
}
}
编辑2: 抱歉,我检查日志时似乎没有很彻底。我两次收到此警告。
警告:注释处理出错:java.lang.NoClassDefFoundError: org/aopalliance/intercept/MethodInterceptor
任何想法如何解决这个问题?
【问题讨论】:
-
如果正在调用
getCity,则请求是GET方法。不需要额外的配置,你一定是发送了错误类型的请求。您确定您的客户在做正确的事吗? -
是的.. 我确信客户做的事情是正确的。它正在登录到控制台。尝试使用 chrome 和 firefox,都发送了 PUT 请求。
-
在
getCity中添加一个HttpServletRequest参数,然后记录request.getMethod(),看看它的含义。 -
您确定您的客户端正在发送 PUT 请求吗?
-
是的.. 客户确实发送了
PUT请求.. 无论如何,感谢 skaffman。我已经修改了我的代码,稍微删除了所有@RequestParam并用HttpServletRequest替换它们,结果转到putCity方法。这很奇怪,但它现在正在工作。谢谢。
标签: java spring rest spring-mvc http-method