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

时间:2015-03-31 22:52:51

标签: java javascript angularjs spring java.util.date

在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}"

2 个答案:

答案 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),未标记为可忽略的

在这里,我可以看到我的“日期”字段导致了问题,我将通过调查来修复它。