I have a DTO:
public class UserDto {
  private Long id;
  private String name;
}
and Controller:
@RestController
@RequestMapping("user")
public Class UserController {
  @PostMapping(value = "{id}")
  public String update(@PathVariable String id, @RequestBody UserDto userDto){
    userDto.setId(id);
    service.update(userDto);
  }
}
What I don't like is manually putting ID from @PathVariable to DTO: userDto.setId(id);.
For POST request /user/5 with body: { name: "test" }, how could I automatically set ID in DTO, so that you'd get DTO like below?
{
  id: 5,
  name: "test"
}
Basically, I'd like to have something like:
@RestController
@RequestMapping("user")
public Class UserController {
  @PostMapping(value = "{id}")
  public String update(@RequestBody UserDto userDto){
    service.update(userDto);
  }
}
Is there a way to accomplish this?
Thank you! :)
EDIT: this is an old question, still unanswered, so I'd like to add new perspective to this question.
Another problem we had is validation, to specific - defining custom constraint that does validation based on some field and id.
if we remove id from request body, then how can we access it from custom constraint? :)
EDIT 2: italktothewind created issue on Github: https://github.com/spring-projects/spring-framework/issues/28637
 
     
    