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方法处理的,而不是由我班上的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";
}
}
EDIT2:对不起,检查日志时似乎不很彻底。我两次收到此警告。
警告:批注处理中的错误:java.lang.NoClassDefFoundError:org / aopalliance / intercept / MethodInterceptor
任何想法如何解决?
问题答案:
解决了…这是修改后的方法
@Controller
@RequestMapping(value =“ / retail / {cid} / master / city”)
公共类城市{
@RequestMapping(方法= RequestMethod.GET)
public String getCity(@PathVariable(value =“ cid”)字符串cid,@ RequestParam(value =“ State”)整数状态,模型模型){
System.out.println(“获取请求”);
返回“索引”;
}
@RequestMapping(方法= RequestMethod.PUT)
public String putCity(@PathVariable(value =“ cid”)字符串cid,@ RequestBody CityData状态,模型模型){
System.out.println(state.getState());
返回“索引”;
}
}
公共类CityData {
私有字符串状态;
公共字符串getState(){
返回this.state;
}
public void setState(String state){
this.state =状态;
}
}
您可以使用@RequestBody String state
,但是我更喜欢创建CityData对象,因为上面的示例过度简化了我的代码,仅用于检查如何处理数据