Не могли бы вы помочь мне решить проблему с прохождением двух объектов через @RequestBody?
Насколько я знаю, вы не можете передать 2 параметра @RequestBody, поэтому я создал класс Tuple для хранения пользовательских данных.
В моем случае мне нужно передать объект Book и значение int в представлении json. Я уже пробовал разные способы, но каждый раз его нельзя правильно разобрать.
@NoArgsConstructor
@AllArgsConstructor
@Getter
@EqualsAndHashCode
@ToString
public final class Tuple<K, V> {
private K key;
private V value;
}
В этом методе я использую Tuple.
@PutMapping("action/returnBook")
public ResponseEntity<Void> returnBook(@RequestBody final Tuple<Long, Long> userIdBookInstanceId) {
leasingHistoryService.returnBook(userIdBookInstanceId.getKey(), userIdBookInstanceId.getValue());
return new ResponseEntity<>(HttpStatus.OK);
}
@Entity
@NoArgsConstructor
@AllArgsConstructor
@Getter
@EqualsAndHashCode
@ToString
public final class Book {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String title;
@ManyToOne(cascade = CascadeType.ALL, optional = false)
private Author author;
}
@Entity
@NoArgsConstructor
@AllArgsConstructor
@Getter
@EqualsAndHashCode
@ToString
public final class Author {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long id;
private String name;
private LocalDate dateOfBirth;
private String bio;
}
Какова структура json-кода, который я должен передать в запросе PUT?
Думаю, с универсальными типами это не сработает. Вы должны создать, например, класс ReturnBookRequest со свойством Book и свойством int, а затем передать этот класс в RequestBody
Возможный дубликат Передача нескольких переменных в @RequestBody контроллеру Spring MVC с использованием Ajax
ты не можешь. проверьте включить ссылку




Я нашел способ это сделать. В данном случае это следующий json:
{
"key" : {
"title": "The Girl in the Spider's Web v17",
"author": {
"id": 2,
"name": "Larsson",
"dateOfBirth": "1954-08-15",
"bio": "Author of the Millennium trilogy"
}
},
"value": 3
}
Возможный дубликат stackoverflow.com/questions/12893566/…