Angular Js post date Bad Request in Java Spring mvc

社会主义新天地 提交于 2019-12-02 03:51:32

问题


In Java Spring MVC project, I post an object to a @RestController and the object I post has an date property. If I remove this property, the post works successfully. But with the date property, it returns a 400 bad request. In the dto the Date is java.util.Date

Method in controller:

@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

The angular js call

if ($scope.petitionForm.$valid) {
        $http.post(getCompletePath("users/createPetition"), JSON.stringify($scope.newPetition))
        .success(function (petition) {

        }).error(function (data, status, headers, config) {

        });

In the js the date has the next value: Thu Mar 19 2015 00:00:00 GMT-0300 (Argentina Standard Time)

The complete json is:

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

回答1:


You need to ensure a better format in your JS code for the JSON Date. There is a discussion here that you should consider - The "right" JSON date format.

Once you have this in order you need a corresponding Date Time Formatter in Spring MVC to be able to convert the JSON Date String into Date Object - spring mvc date format with form:input; and here's another example.




回答2:


In your log4j properties, activate spring debug logs so that you will be able to see what is wrong with your object sent in request. Add the following line to your log4j properties:

log4j.logger.org.springframework.web=debug

For example, my error text:

org.springframework.http.converter.HttpMessageNotReadableException: Could not read JSON: Unrecognized field "date" (class org.joda.time.DateTime), not marked as ignorable

Here, I can see that my "date" field is causing a problem and I will fix it by investigating around it.



来源:https://stackoverflow.com/questions/29379947/angular-js-post-date-bad-request-in-java-spring-mvc

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!