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 ?
You're missing the @RequestBody
annotation on the User user
argument.