在Java Spring MVC项目中,我将对象发布到@RestController,并且我发布的对象具有日期属性。如果我删除此属性,该帖子可以成功运行。但是使用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}"
答案 0 :(得分:1)
您需要确保JSON日期的JS代码中有更好的格式。这里有一个讨论你应该考虑 - The "right" JSON date format。
按顺序执行此操作后,您需要在Spring MVC中使用相应的日期时间格式化程序才能将JSON日期字符串转换为日期对象 - spring mvc date format with form:input;这是另一个example。
答案 1 :(得分:1)
在log4j属性中,激活spring调试日志,以便您能够看到请求中发送的对象出了什么问题。将以下行添加到log4j属性:
log4j.logger.org.springframework.web=debug
例如,我的错误文字:
org.springframework.http.converter.HttpMessageNotReadableException: 无法读取JSON:无法识别的字段“日期”(类 org.joda.time.DateTime),未标记为可忽略的
在这里,我可以看到我的“日期”字段导致了问题,我将通过调查来修复它。