У меня есть базовое приложение SpringBoot. с использованием Spring Initializer, JPA, встроенного Tomcat, механизма шаблонов Thymeleaf и пакета в виде исполняемого файла JAR. Я определил этот метод Rest для обновления пользователя
@PutMapping(path = "/api/users/{id}",
consumes = "application/json",
produces = "application/json")
public ResponseEntity<User> updateUser
(HttpServletRequest request,
@PathVariable long id,
User user) {
System.out.println(user);
saveUser (user)
return ResponseEntity.ok(user);
}
Я вызываю этот метод из консоли, используя
curl -X PUT -H "Content-Type: application/json" -H "Authorization: Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJyaWNhcmQub2xsZUBnbWFpbC5jb20iLCJleHAiOjE1MjgxMTM3NTIsImlhdCI6MTUyNzUwODk1Mn0.QdxabtU1U87pYvyTstT1EG3E6uVpLo2mXCF0FF8iD6acKoAXKl_A0-eV_GrpOFg5FF1qR6B7llI5_USJL85YTQ" -d '{
\"id\":1,\"username\":\"[email protected]\",\"email\":\"[email protected]\",\"firstName\":\"Pere\",\"lastName\":\"PERIS\",\"country\":\"CAT\",\"enabled\":true}' "http://127.0.0.1:2233/iCrypts/api/users/1"
Но на System.out.println(user); все значения, которые я получаю от POJO, равны нулю (!?), А вот id, равный 1




Аннотация @RequestBody отсутствует
public ResponseEntity<User> updateUser
(HttpServletRequest request,
@PathVariable long id,
@RequestBody User user) {
......
}
Причина, по которой он содержит id со значением 1, заключается в том, что он должен автоматически генерироваться на уровне сохраняемости.
Как выглядит ваш класс
User? Кроме того, вы должны добавить аннотацию@RequestBodyк вашему параметруUser user, поскольку я считаю, что Spring по умолчанию вместо этого ожидает параметр запроса.