zoukankan      html  css  js  c++  java
  • springmvc参数传递

    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阻止深度序列化。这样就可以在后台接口中不添加“[]”了。

  • 相关阅读:
    thinkphp中的验证码的实现
    js深入研究之牛逼的类封装设计
    js深入研究之函数内的函数
    js深入研究之初始化验证
    js深入研究之Person类案例
    js深入研究之匿名函数
    js深入研究之类定义与使用
    sublime text3 自动编译php 适合用于简单的php文件执行
    PHP实现四种基本排序算法 得多消化消化
    thinkphp中的类库与引用import引入机制
  • 原文地址:https://www.cnblogs.com/grasp/p/12144314.html
Copyright © 2011-2022 走看看