Search code examples
javaspringweb-servicesrestput

Object values are null when passing to REST Web service using PUT method


Following is my code for the same

Service:

@RequestMapping(value="/updateuser/", method=RequestMethod.PUT, consumes={MediaType.APPLICATION_JSON_VALUE, MediaType.APPLICATION_XML_VALUE})
public ResponseEntity<String> updateUserDetails(User user){
    System.out.println(user); //output: [username=null, enabled=0, password=null, authority=null, userDetails=null]
    boolean result = userService.updateUserDetails(user);
    if(result){
        return new ResponseEntity<>(HttpStatus.OK);
    } 
    return new ResponseEntity<>(HttpStatus.NOT_FOUND);
}

request made using chrome REST client:

Url: http://localhost:8080/xxx/services/updateuser/

Method: PUT

Content-Type: application/xml

Data:

<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<user>
<authority>
<authority>candidate</authority>
<username>kartik.sharma@gmail.com</username>
  </authority>
  <enabled>1</enabled>
<password>$2a$10$F2wGgQx6hqbsVRcVJrEIF.OI0/hWDN083Wa2kq.rwy0cVU.Y1o6/6</password>
<userDetails>
  <firstName>KartikUpdated</firstName>
  <lastName>Sharma</lastName>
  <username>kartik.sharma@gmail.com</username>
</userDetails>
<username>kartik.sharma@gmail.com</username>
</user>

What I am missing ?


Solution

  • You're missing the @RequestBody annotation on the User user argument.