title: Spring mvc bad request with @requestbody
body: <p>i have a Spring MVC service with that signature:</p>
  
  <pre><code>@RequestMapping(method = RequestMethod.POST, value = "/addUser", consumes = "application/json")
      public @ResponseBody User addUser(@RequestBody User user) {
  </code></pre>
  
  <p>And this in context.xml</p>
  
  <pre><code>&lt;bean id="jacksonMessageConverter"
          class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"&gt;&lt;/bean&gt;
      &lt;bean
          class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"&gt;
          &lt;property name="messageConverters"&gt;
              &lt;list&gt;
                  &lt;ref bean="jacksonMessageConverter" /&gt;
              &lt;/list&gt;
          &lt;/property&gt;
      &lt;/bean&gt;
  </code></pre>
  
  <p>I do a Post request and always return me a 400error->Bad request.
  I write a filter to read the request content and is this:</p>
  
  <p>Edit json:</p>
  
  <pre><code>{
      "email": "Anchor",
      "latitude": 40.3139461,
      "longitude": -3.8810229,
      "name": "a",
      "online": true,
      "password": "a",
      "deviceRegId": "APA91bGnD1EuqEm9cpoHsenC-HEphQJRniEnhPovK24QkKkLBXrDesSCP6CFlyOKwR1huwSI28Wd-DdN0N8MDKle7myYB7Dznzc3Z11ZOv3jMlJEIegykpnnnYScrElw2czQEa4pKFeQW7BklUsUS-IB15LMqH_Ag"
  }
  </code></pre>
  
  <p>Edit: The user class</p>
  
  <pre><code>public class User implements Serializable{
  
  
  @JsonProperty("deviceRegId")
  private java.lang.String deviceRegistrationID;
  @JsonProperty("email")
  private java.lang.String email;
  @JsonProperty("latitude")
  private java.lang.Double latitude;
  @JsonProperty("longitude")
  private java.lang.Double longitude;
  @JsonProperty("name")
  private java.lang.String name;
  @JsonProperty("online")
  private java.lang.Boolean online;
  @JsonProperty("password")
  private java.lang.String password;
  
  public User(String deviceRegid) {
      this.deviceRegistrationID = deviceRegid;
      this.online = true;
  }
  
  public java.lang.String getDeviceRegistrationID() {
      return deviceRegistrationID;
  }
  
  public java.lang.String getEmail() {
      return email;
  }
  
  public void setEmail(java.lang.String email) {
      this.email = email;
  }
  
  public java.lang.Double getLatitude() {
      return latitude;
  }
  
  public void setLatitude(java.lang.Double latitude) {
      this.latitude = latitude;
  }
  
  public java.lang.Double getLongitude() {
      return longitude;
  }
  
  public void setLongitude(java.lang.Double longitude) {
      this.longitude = longitude;
  }
  
  public java.lang.String getName() {
      return name;
  }
  
  public void setName(java.lang.String name) {
      this.name = name;
  }
  
  public java.lang.Boolean getOnline() {
      return online;
  }
  
  public void setOnline(java.lang.Boolean online) {
      this.online = online;
  }
  
  /**
   * @return value or {@code null} for none
   */
  public java.lang.String getPassword() {
      return password;
  }
  
  /**
   * @param password
   *            password or {@code null} for none
   */
  public void setPassword(java.lang.String password) {
      this.password = password;
  }
  </code></pre>
  
  <p>Whats the problem?</p>