kendo,grid使用parameterMap传参,springmvc的Controller接受不到值

来源:互联网 发布:淘宝特卖优惠券 入口 编辑:程序博客网 时间:2024/06/07 03:22

在getPaList(PageQuery query)的参数前加上@RequestBody就行了,getPaList(@RequestBody PageQuery query).

GET模式下,这里使用了@PathVariable绑定输入参数,非常适合Restful风格。因为隐藏了参数与路径的关系,可以提升网站的安全性,静态化页面,降低恶意攻击风险。
POST模式下,使用@RequestBody绑定请求对象,Spring会帮你进行协议转换,将Json、Xml协议转换成你需要的对象。
@ResponseBody可以标注任何对象,由Srping完成对象——协议的转换。

但我有些奇怪,我以前没有用@RequestBody也能接收到参数,为什么现在不行?是配置原因,终于找到答案。

这是我前台用kendo做的一段代码:

 transport : {
        read : {
         type: "post",
            url : "getSatelliteList.do",
            dataType : "json"
        },
    parameterMap : function(options, operation) {
    if (operation == "read") {
        var parameter = {
            page : options.page,    //当前页
            pageSize : options.pageSize,//每页显示个数
            take: options.take,
            skip: options.skip
        };
        return parameter;
    }

用这种形式就不用加@RequestBody也能接收到参数。而下面之一种:

transport : {
      read : {
        type : "post",
        url : "url",
        dataType : "json",
        contentType : "application/json"
      },
      parameterMap : function(options, operation) {
        if (operation == "read") {
          var parameter = {
            page : options.page, //当前页
            pageSize : options.pageSize//每页显示个数
           
          };
          return kendo.stringify(parameter);
        }
      }
    }

就必须加@RequestBody才能接收到参数。

两者之间的区别:第一种传过去的参数不是json类型字符串,而是&page=5&pagesize=10....

而第二中传过去的就是{"page":5,"pagesize":10.......}json类型的字符串,它要后台接受解析的话就需要@RequestBody