Angular Js post date Bad Request in Java Spring mvc

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

Answers:

Answer

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.

Answer

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.

Tags

Recent Questions

Top Questions

Home Tags Terms of Service Privacy Policy DMCA Contact Us Javascript

©2020 All rights reserved.