Spring MVC post方法无法接收Integer类型变量问题

  现在我们都采取前后分离的方法来设计网站,前端通常以ajax的方式、json格式向后端发送或者请求数据,之前一段时间,我们也以表单的形式、form-data格式提交数据,这两种不同的传递数据的格式也是导致我一直踩坑的原因。

@RequestMapping(value = "get",method = RequestMethod.POST)
@ResponseBody
public int get(Integer i)
{
  return i;
}

  我前端采用ajax的方式向后端post数据数据,但是以上面这种方式始终无法正确接收到i值,但是如果以String将json作为一个字符串整体接收是没有问题的,或者用一个拥有和json键值对应属性的对象来接收也是没有问题的,这个问题困扰了我很久。

  后来考虑到可能是数据格式的问题,于是将postman的数据格式设置为data-form,再向后端post数据,后端就可以准确的接收到i值。

form-data表单是“键值对”的数据格式,

例如:name=李雷&password=韩梅梅

这种表示形式类似于get请求的数据格式,只不过get请求将数据放在url里,而post请求将数据放在body里面。

json则可以传递更为复杂的数据,我们可以在里面写入数组,甚至可以写入json数组。

{
    "name": "李雷",
    "password": "韩梅梅",
    "major ": [{
        "favorite": "英语 "
    }, {
        "second": "语文 "
    }]

}
我们知道,以这种形式接收get数据是没有问题的。
@RequestMapping(value = "get",method = RequestMethod.GET)
@ResponseBody
public int get(@Param("i") Integer i)
{
  return i;
}

所以,我们不难得出结论,Spring mvc可以直接解析 以“键值对”的数据格式传递的数据,以json格式传递的数据,我们可以用对象接收,或者直接以String 形式接收,然后用fastJson或者gson等工具进行解析。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值