问题描述: 当使用AJAX调用将数据传递给控制器时,控制器中接收到的数据为null。这通常是因为没有正确设置请求以正确接收数据。
解决步骤: 1.检查AJAX请求是否包含相应的数据并正确传递给控制器。确保数据是在请求体中而不是在URL参数中传递的。 2.检查控制器的参数是否与请求传递的数据一致。 3.使用Request Body注解,确保请求使用正确的媒体类型和编码。
示例代码: 前端AJAX请求数据:
$.ajax({ method: 'POST', url: '/mycontroller/myaction', data: {'name': 'John', 'age': 25}, success: function(data) { console.log(data); } });
控制器方法代码:
@RequestMapping(value = "/myaction", method = RequestMethod.POST, consumes = "application/json") public ResponseEntity> myAction(@RequestBody RequestDataModel requestData) { System.out.println("Name: " + requestData.getName()); System.out.println("Age: " + requestData.getAge()); //其他业务逻辑 return ResponseEntity.ok(responseData); }
在这个例子中,我们将两个数据项(name和age)作为AJAX请求体发送到/mycontroller/myaction。控制器方法接收请求数据并将其映射到RequestDataModel对象。使用@RequestBody注解表明请求体是一个JSON对象,并且要使用application/json媒体类型和UTF-8编码。控制器现在可以使用RequestDataModel对象访问请求数据。