5

我在捕获发送到服务器的 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

任何想法如何解决这个问题?

4

2 回答 2

5

解决了...这是修改后的方法

@控制器
@RequestMapping(value="/retail/{cid}/master/city")
公共类城市{

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

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

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

于 2011-04-03T14:39:06.977 回答
1

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

文档写道:

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

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

于 2011-04-02T14:26:52.633 回答