最近开发 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。

ajax 调用 java webapi 多个参数(一)的更多相关文章

  1. ajax 调用 java webapi 多个参数(二)

    第一种方法:http://blog.csdn.net/hanjun0612/article/details/74436273 附上另一种解决方法. 这个方法主要针对  嵌套模型(模型中含有模型)的ap ...

  2. 利用Ajax调用controller方法并传递参数

    一.背景由于近期工作需要将人脸识别功能与选课系统结合,但是对前端知识了解的很少,只能边做边学了,因此在这边把遇到的一些坑说明一下,希望能帮助到像我一样的初学者 二.具体内容这里采用框架为MVC,如果想 ...

  3. ajax调用c#后端,发现参数没数值

    之前是int的数据,名字是id 后面被改成字符串的数据,名字是encrptedId 因为名字不匹配,导致找不到数值.只需要把js里调用传递的参数名字改一下,或者C#后端,继续保持原来的名字

  4. C++调用JAVA方法详解

    C++调用JAVA方法详解          博客分类: 本文主要参考http://tech.ccidnet.com/art/1081/20050413/237901_1.html 上的文章. C++ ...

  5. Android JNI开发之C/C++层调用JAVA

    一.从C/C++层调用JAVA层代码(无参数调用) //在c代码里面调用java代码里面的方法 // java 反射 // 1 . 找到java代码的 class文件 // jclass (*Find ...

  6. Android NDK学习(四):C/C++层调用JAVA

    一.从C/C++层调用JAVA层代码(无参数调用) //在c代码里面调用java代码里面的方法 // java 反射 // 1 . 找到java代码的 class文件 // jclass (*Find ...

  7. lua调用java java调用lua[转载]

    转载:http://dualface.github.io/blog/2013/01/01/call-java-from-lua/LuaJavaBridge - Lua 与 Java 互操作的简单解决方 ...

  8. java 调用 C# webapi

    最近项目需要 java调用  .net 的webapi. 对于get来说很简单,但是post方法遇到了些问题,最后也是曲线救国. 先看代码 Java  代码 public static void ma ...

  9. c#代码 天气接口 一分钟搞懂你的博客为什么没人看 看完python这段爬虫代码,java流泪了c#沉默了 图片二进制转换与存入数据库相关 C#7.0--引用返回值和引用局部变量 JS直接调用C#后台方法(ajax调用) Linq To Json SqlServer 递归查询

    天气预报的程序.程序并不难. 看到这个需求第一个想法就是只要找到合适天气预报接口一切都是小意思,说干就干,立马跟学生沟通价格. ​ ​不过谈报价的过程中,差点没让我一口老血喷键盘上,话说我们程序猿的人 ...

随机推荐

  1. linux 服务器安全加固和内核参数调优 nf_conntrack

    0.内部设置跳板机,服务器只能通过跳板机登录1.禁止ROOT用户远程登录和登录端口 禁止ROOT用户远程登录 .打开 /etc/ssh/sshd_config PermitRootLogin no . ...

  2. day83

    今日内容 rest_framework序列化 首先序列化需要对写一个类继承serializers.Serializer 方式一:在models的publish写一个__str__方法返回出版社名字 p ...

  3. 现有各种SSTC电路图,欢迎补充,研究,开发

    现有各种SSTC电路图,欢迎补充,研究,开发  496464505 2016-3-1 16:01:55 现在的各种SSTC基本都是这些图   2016-3-3 19:28:23 comter2001 ...

  4. 【强化学习】python 实现 q-learning 迷宫通用模板

    本文作者:hhh5460 本文地址:https://www.cnblogs.com/hhh5460/p/10145797.html 0.说明 这里提供了二维迷宫问题的一个比较通用的模板,拿到后需要修改 ...

  5. 针对django2.2报错:UnicodeDecodeError: 'gbk' codec can't decode byte 0xa6 in position 9737: ill....

    1.报错: File "D:\Python\Python37-32\lib\site-packages\django\views\debug.py", line 332, in g ...

  6. Spring Boot 2.0 版的开源项目云收藏来了!

    给大家聊一聊云收藏从 Spring Boot 1.0 升级到 2.0 所踩的坑 先给大家晒一下云收藏的几个数据,作为一个 Spring Boot 的开源项目(https://github.com/cl ...

  7. 【JVM.2】垃圾收集器与内存分配策略

    垃圾收集器需要完成的3件事情: 哪些内存需要回收? 什么时候回收? 如何回收? 在前一节中介绍了java内存运行时区域的各个部分,其中程序计数器.虚拟机栈.本地方法栈3个区域随线程而生,随线程而灭:栈 ...

  8. CEPH Object Gateway

    参考文档: CEPH OBJECT GATEWAY:http://docs.ceph.com/docs/master/radosgw/ 一.环境准备 1. Ceph Object Gateway框架 ...

  9. springcloud 笔记

    官方教程 http://projects.spring.io/spring-cloud/ guide https://github.com/spring-guides 伪官方教程 https://sp ...

  10. linux-shell-变量参数

    sxt1 的生命周期随着调起而生效,结束就消失 子进程和父进程的关系,