Angular Js在Java Spring mvc中发布日期错误请求

在Java Spring MVC项目中,我将对象发布到@RestController,并且我发布的对象具有日期属性。 如果我删除此属性,该post可以成功运行。 但是使用date属性,它会返回400个错误请求。 在dto中,Date是java.util.Date

控制器中的方法:

@RequestMapping(value = "/users/createPetition", method = RequestMethod.POST) public @ResponseBody PetitionDTO addPetition(@RequestBody PetitionRequestDTO petitionDto, Model model) { ... 

PetitionRequestDTO

 public class PetitionRequestDTO { private Long userId; private Long categoryId; private String title; private String description; private Date initialDate; private String address; //getters setters 

角js调用

 if ($scope.petitionForm.$valid) { $http.post(getCompletePath("users/createPetition"), JSON.stringify($scope.newPetition)) .success(function (petition) { }).error(function (data, status, headers, config) { }); 

在js中,日期具有下一个值:Thu Mar 19 2015 00:00:00 GMT-0300(阿根廷标准时间)

完整的json是:

 "{"selectedCategory":{"id":3,"name":"Plomero","description":"Plomeria"},"name":"aaa","title":"bbb","description":"ccc","initialDate":"2015-03-19T03:00:00.000Z","address":"asd","categoryId":3}" 

您需要确保JSON日期的JS代码中有更好的格式。 这里有一个讨论你应该考虑 – “正确的”JSON日期格式 。

按顺序完成后,你需要Spring MVC中相应的Date Time Formatter才能将JSON Date String转换为Date Object – spring mvc date format with form:input ; 这是另一个例子 。

在log4j属性中,激活spring调试日志,以便您能够看到请求中发送的对象出了什么问题。 将以下行添加到log4j属性:

 log4j.logger.org.springframework.web=debug 

例如,我的错误文本:

org.springframework.http.converter.HttpMessageNotReadableException:无法读取JSON:无法识别的字段“date”(类org.joda.time.DateTime),未标记为可忽略

在这里,我可以看到我的“日期”字段引起了问题,我将通过调查来解决它。