今天在做一个分页的时候,发现前台数据后台无法获取到,但是httpRequest是可以确定传入参数了的
后台使用springMVC框架处理请求:
@RequestMapping(value = "list", method = RequestMethod.POST)
public Object list(@RequestParam(value = "currentIndex", required = false)Integer current,
@RequestParam(value = "pageSize", required = false)Integer size){
结果总是报错:空指针异常
DEBUG - Could not complete request java.lang.NullPointerException
我当时的感觉是,没有问题啊(其实这个问题一眼就可以看出来)前台保证数据是传入了的,后天保证获取数据的方式没有错。。。。尴尬了,没办法,只有继续查,bug不调出来心里难受啊。从ajax开始查代码:
$.ajax({
type: 'post',
url: rootPath+'/monitor/list',
contentType: 'application/json',
data:{ "currentIndex": currentIndex, "pageSize": pageSize },
datatype: 'json',
success: function (res) {}
});
尝试1:
data:JSON.stringify({ "currentIndex": currentIndex, "pageSize": pageSize }),
结果:
我已经不能呼吸了,这样了还是报错空指针。
尝试2:
感觉以前写ajax时候,没有使用contentType: ‘application/json’,所以去掉
contentType: 'application/json',
这行代码,结果;
绝望了,还是报错空指针。最后再把JSON.stringify()去掉
尝试3:
$.ajax({
type: 'post',
url: rootPath+'/monitor/list',
data:{ "currentIndex": currentIndex, "pageSize": pageSize },
datatype: 'json',
success: function (res) {}
});
你猜怎么着,看结果:
没有报错了,哈哈。我曹卧槽卧槽!!!!!!!!!!!!!!我马上去查了
contentType: ‘application/json‘还有JSON.stringify()
contentType:
MediaType,即是Internet Media Type,互联网媒体类型;也叫做MIME类型,在Http协议消息头中,使用Content-Type来表示具体请求中的媒体类型信息。就是说明文档类型
JSON.stringify():
从一个对象解析出字符串
var a={a:1,b:2}
经 JSON.stringify(a)得到:
"{'a':1,'b':2}"
这样就说明清楚了,还有一个解析json的:JSON.parse(str)
通过刚刚那个函数将json对象转换为一个字符串了,这样后台获取不到就是必然的了。想想今天这个bug,其实刚刚开始就可以一看看出来的,不过最后还是解决了。但是,同时说明了一个问题,基础不够扎实,还需要努力。