ajax 调用 java webapi 多个参数(一)
2017-07-05 14:39
441 查看
最近开发 java webapi。
遇到一个问题,如果是多个参数(其中包含对象类型),我应该怎么传递?
PS:userid,account,password都会映射到 user对象。
@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作为默认类型的关系
)
方案2 将2个对象合并,对于多种多样的模型,创建很多类我觉得不可取。
方案3 好像是 实现自己的HandlerMethodArgumentResolver 类似于方案1。
遇到一个问题,如果是多个参数(其中包含对象类型),我应该怎么传递?
一 先看解决方案:
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 多个参数(二)
- java webservice调用c#接口并传多个参数
- java调用百度地图web服务api-----该方法可用在js跨域请求上
- Jquery 调用asp.net ajax (web service/static page method)的示例(一)---简单参数
- 24、jQuery常用AJAX-API/Java调用MySQL / Oracle过程与函数
- java webservice调用中参数null的问题
- android中利用webview调用网页上的js代码 Java代码调用js并传递参数
- Java 调用新浪微博API int64类型 参数传入方法
- C#调用Java端Web服务(CXF)时发生Integer参数类型无法传递的问题
- java调用百度地图web服务api-----该方法可用在js跨域请求上
- 改变mvc web api 支持android ,ios ,ajax等方式跨域调用
- webview js 与 java 调用参数问题。
- JQuery中使用Ajax传中文参数乱码解决方案(javaweb开发)
- DELPHI7如何调用带参数的JAVA WebService
- Jquery 调用asp.net ajax (web service/static page method)的示例(二)---复杂参数
- 解决Java调用php web webService 中文参数乱码
- 有关AJAX异步调用web服务中带参数的方法的心得
- java Web Service Axis调用参数问题
- 使用 AJAX 调用 SOAP Web 服务
- 面向 Java 开发人员的 Ajax: 使用 Google Web Toolkit 开发 Ajax