众妙之门

业精于勤,荒于嬉;行成于思,毁于随

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

1.在请求路径中传递参数

可以在接口路径中用{}来表明它的变量部分,例如:

@GetMapping("/task/{erId}/{trId}")

需要注意的是,在默认情况下,变量中不可以包含URL的分隔符“/”

使用方式:

    @GetMapping("/task/{erId}/{trId}")
    public String callBackInf(@PathVariable("erId") BigDecimal erId,
                              @PathVariable("trId") BigDecimal trId) {
        System.out.println("" + erId + trId);
        return "OK";
    }

 

2.传递数组类型的参数配置

springmvc的接口

复制代码
    @ResponseBody
    @PostMapping("/setMenu")
    public Map setMenu(@RequestParam(value = "id") Integer id,
                          @RequestParam(required = false, value = "ids[]") Integer[] ids) throws Exception {
        System.out.println(id);
        System.out.println(ids);
        HashMap<Object, Object> map = new HashMap<>();
        map.put("id", id);
        map.put("ids", ids);
        return map;
    }
复制代码

js代码

复制代码
        var param = {id: 1, ids: [1, 2]};
        $.ajax({
            url: "<%=request.getContextPath() + "/setMenu"%>",
            type: "POST",
            dataType: "json",
            contentType: 'application/x-www-form-urlencoded',
            data: param,
            success: function (data) {
                console.log("data:", data);
            }
        });
复制代码

运行截图效果

注意的地方就是在接口参数那点有“[]”,而在js那点就没得“[]”。

通过ajax提交数组时,会自动在所设定的参数后面增加中括号:“[]”

jQuery会调用jQuery.param序列化参数,jQuery.param( obj, traditional ),默认的话,traditional为false,即jquery会深度序列化参数对象,以适应如PHP和Ruby on Rails框架,但servelt api无法处理,我们可以通过设置traditional 为true阻止深度序列化。这样就可以在后台接口中不添加“[]”了。

 

posted on   xuanm  阅读(670)  评论(0编辑  收藏  举报
努力加载评论中...
点击右上角即可分享
微信分享提示