这个错误,花我好几个小时,才发现问题所在,所以记录下来,以防有人遇到跟我一样的问题,也防止以后自己再次出现同样的问题。
前端的JavaScript代码如下:
function getJsonData(){ $.ajax({ // 传输数据的方式:POST/GET type : "post", // 请求URL url : "${pageContext.request.contextPath}/json/getData", // 请求的数据类型 contentType : "application/json;charset=utf-8", // 传输到后台的数据 data : '{"userName" : "wumingshi", "gender" : "male"}', dataType : "json", // 请求成功 success : function(data){ alert(data.userName + ", " + data.gender); console.log("服务器传输到前台的数据:" + data); } }); }
后台的java代码如下:
@Controller @RequestMapping("/json") public class JsonHandlerController { @RequestMapping(name = "/getData", method = RequestMethod.POST) public @ResponseBody Person getData(@RequestBody Person person) { System.out.println("姓名:" + person.getUserName() + ", 性别:" + person.getGender()); return person; } }
我怎么都没发现错误出现在哪,倒是我发现在eclipse启动时的启动信息中,发现如下信息:
我的请求应该是/json/getData才对,情动信息里只用/json是什么原因。
然后,我把配置在类上@RequestMapping去掉之后,重新再启动,就发现如下:
这里发现就只有一个[]括号了,怎么回事,按理说应该是/getData,问题就是出现在这了,如下
应该把@RequestMapping中的name属性该为value属性,就好了。
当然,出现这种错误的原因很多,还有配置方面等等其他原因也有可能出现这种错误,我只是把我出现这种错误提出而已,希望对大家有用。