Spring Framework,启用PUT方法

我遇到了捕获发送到服务器的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方法处理的,而不是我class级中的PUT方法..在屏幕上,它总是读作“获取请求”。 我检查了浏览器日志并确认他们发送了正确的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 

任何想法如何解决?

它被解决了……这是修改后的方法

 @Controller
 @RequestMapping(值= “/零售/ {CID} /主/城市”)
公共类城市{

   @RequestMapping(method = RequestMethod.GET)  
   public String getCity(@PathVariable(value =“cid”)String cid,@ RequestParam(value =“State”)整数状态,模型模型){
     System.out.println(“获取请求”);  
    返回“索引”;  
   }

   @RequestMapping(method = RequestMethod.PUT)  
   public String putCity(@PathVariable(value =“cid”)String cid,@ RequestBody CityData state,Model model){
    的System.out.println(state.getState());
    返回“索引”;
   }
 }
公共类CityData {
  私有字符串状态;
   public String getState(){
    返回this.state;
   }
   public void setState(String state){
     this.state = state;
   }
 }

您可以使用@RequestBody String state ,但我更喜欢创建CityData对象,因为上面的示例过于简化了我的代码,只是为了检查如何处理数据

它可能与您未指定映射值的事实有关。 分别尝试@RequestMapping(value="/foo", ...GET)@RequestMapping(value="/foo", ...PUT)

文档写道:

如果您有一个默认方法(没有显式路径映射),那么所有没有找到更具体的映射方法的请求都将被分派给它。 如果您有多个此类默认方法,则会考虑方法名称以便在它们之间进行选择。

关于错误 – 您需要将aopalliance jar添加到类路径中。