近日在做一个springmvc的项目,由于第一次使用,所有难免会碰到一些问题。但是昨天碰到的一个问题太奇葩了。描述如下:
我在后台定义了一个controller,通过modelattribute进行值的自动注入。前台通过ajax异步提交请求。本来这是一件很简单的事情,结果呢?我的值始终注入不进去。我左想右想都没有想到是什么引起的。因为对springmvc不熟,所以一直在排查后台的原因。后来,我通过浏览器,直接用url请求并把参数带进去,发现值居然注进去了。这就说明原因不在后台。ajax就那么几行代码,并且通过debug明明看到值是获取到的,并且是通过post请求发送出去的。这为什么又没有注入进去了。后来定位到这一句:
$.ajaxSetup({
contentType : 'application/json;charset=UTF-8'
})
将这一句去掉,值就能注入了。百思不得其解。后来在http://api.jquery.com/jQuery.ajax/ 里看到了这句话的用途。一般情况下,我们是设置为'application/x-www-form-urlencoded; charset=UTF-8'
.但是如果你在前台是json格式的话,那么就需要加上这句话了。