zoukankan      html  css  js  c++  java
  • ajax 调用 java webapi 多个参数(一)

    最近开发 java webapi。

    遇到一个问题,如果是多个参数(其中包含对象类型),我应该怎么传递?


    一  先看解决方案:


    ajax

    <script>
        var data={ "userid":"15","account":"hj","password":"123","a":"111","b":222};
        $.ajax({
            type: 'post',
            url: '/sanjuSCM/api/test/test',
            dataType:"json",
            data: data,
            success: function (data) {
                alert(data);
            }
        });
    </script>

    PS:json字段名必须与model属性中的字段名一样!!!


    java webapi

    @RequestMapping(value = "test", method = RequestMethod.POST)
    	public BaseResult test(HttpServletRequest request, HttpServletResponse response,
    	SysUser user, @RequestParam String a, @RequestParam Integer b) throws Exception {
    
    		ApiResult rm = new ApiResult();
    		rm.setData(a);
    		return rm;
    	}
    

    PS:userid,account,password都会映射到 user对象。
    a,b分别映射到a和b参数。(@RequestParam可以不加)


    二  问题:虽然问题解决了,但有些不明白的地方


    那么问题来了,当我使用 
    @RequestBody SysUser user,@RequestParam String a,@RequestParam Integer b
    这样的话,由于@RequestBody 需要设置json字符串,导致a和b无法接收(大家也知道@RequestBody唯一。所以不指望出现3个@RequestBody了)。
    如果我改成
    @RequestParam SysUser user,@RequestParam String a,@RequestParam Integer b
    又发觉@RequestParam 无法映射实体对象。

    那么当我直接SysUser user,@RequestParam String a,@RequestParam Integer b   什么注解都不添加的情况下,
    为何能接收到?他属于哪种注解类型???
    (目前,我把问题归结到:
    Content-Type:
    application/x-www-form-urlencoded; charset=UTF-8作为默认类型的关系


    三  至于网上流传的3种方案,我也知道。但是我并不中意,

    方案1   使用map<>,这无疑加大了后台根据key取值的工作量,当然如果你使用泛型来封装,倒也可以。这也是没办法中的办法了。

    方案2  将2个对象合并,对于多种多样的模型,创建很多类我觉得不可取。

    方案3  好像是   实现自己的HandlerMethodArgumentResolver  类似于方案1。


  • 相关阅读:
    Maven 环境的配置
    zTree的简单例子
    plsql免安装客户端的配置
    HDU 1232 畅通工程
    HDU 5698 瞬间移动
    Codeforces 1015E1 Stars Drawing (Easy Edition)
    Codeforces 784B Santa Claus and Keyboard Check
    Codeforces 500C New Year Book Reading
    NSarray 赋值 拷贝 等问题记录
    UINavigationController 操作记录
  • 原文地址:https://www.cnblogs.com/hanjun0612/p/9779791.html
Copyright © 2011-2022 走看看