将JSON数据从JSP传递到ResponseBody中的控制器时出错。
07:13:53.919 DEBUG o.s.w.s.m.m.a.ExceptionHandlerExceptionResolver - Resolving exception from handler [public com.chaitanya.ajax.AjaxResponse com.chaitanya.web.controller.DepartmentController.addDepartment(com.chaitanya.ajax.AjaxResponse)]: org.springframework.http.converter.HttpMessageNotReadableException: Required request body content is missing: org.springframework.web.method.HandlerMethod$HandlerMethodParameter@98d8d36c 07:13:54.106 DEBUG o.s.w.s.m.a.ResponseStatusExceptionResolver - Resolving exception from handler [public com.chaitanya.ajax.AjaxResponse com.chaitanya.web.controller.DepartmentController.addDepartment(com.chaitanya.ajax.AjaxResponse)]: org.springframework.http.converter.HttpMessageNotReadableException: Required request body content is missing: org.springframework.web.method.HandlerMethod$HandlerMethodParameter@98d8d36c 07:13:54.125 DEBUG o.s.w.s.m.s.DefaultHandlerExceptionResolver - Resolving exception from handler [public com.chaitanya.ajax.AjaxResponse com.chaitanya.web.controller.DepartmentController.addDepartment(com.chaitanya.ajax.AjaxResponse)]: org.springframework.http.converter.HttpMessageNotReadableException: Required request body content is missing: org.springframework.web.method.HandlerMethod$HandlerMethodParameter@98d8d36c 07:1
Ajax电话:
$.ajax({ url: "/BusinessReimbursment/addDepartment", method: 'POST', dataType: 'json', data: "{\"message\":\"abc\",\"success\":true}", contentType: 'application/json', mimeType: 'application/json', success: function(data) { alert(data.id + " " + data.name); commit(true); }, error:function(data,status,er) { alert("error: "+data+" status: "+status+" er:"+er); } });
控制器:
@RestController public class DepartmentController { @Autowired @Qualifier("departmentService") private DepartmentService departmentService; @RequestMapping(value="/addDepartment", method={RequestMethod.POST}) public @ResponseBody AjaxResponse addDepartment(@RequestBody AjaxResponse departmentDTO){ AjaxResponse response=new AjaxResponse(); return response; }
AppConfig.java
@豆
public RequestMappingHandlerAdapter annotationMethodHandlerAdapter() { final RequestMappingHandlerAdapter annotationMethodHandlerAdapter = new RequestMappingHandlerAdapter(); final MappingJackson2HttpMessageConverter mappingJacksonHttpMessageConverter = new MappingJackson2HttpMessageConverter(); List<HttpMessageConverter<?>> httpMessageConverter = new ArrayList<HttpMessageConverter<?>>(); httpMessageConverter.add(mappingJacksonHttpMessageConverter); String[] supportedHttpMethods = { "POST", "GET", "HEAD" }; annotationMethodHandlerAdapter.setMessageConverters(httpMessageConverter); annotationMethodHandlerAdapter.setSupportedMethods(supportedHttpMethods); return annotationMethodHandlerAdapter; }
请帮助我摆脱困境。我正在使用Spring 4,Jakson 2.3.0
如果我尝试POST请求,它将给出:org.springframework.web.HttpRequestMethodNotSupportedException:请求方法’POST’不支持
抱歉,..实际上是因为需要一个csrf令牌,所以我遇到了这个问题。我已经实现了spring安全性,并且启用了csrf。通过ajax调用,我需要传递csrf令牌。