У меня проблема с отправкой объекта JSON в контроллер метода из javascript. Ниже приведен фрагмент кода javascript:
$.getJSON("/api/tasks/" + id)
.done(function( task ) {
$.post("/tasks/update", {
id: task.id,
version: task.version,
name: task.name,
description: task.description,
priority: task.priority,
finished: task.finished,
category: task.category
});
});
И контроллер метода, который должен получить объект json
@PostMapping(path = "update")
public String processUpdateForm(@ModelAttribute @Valid Task task, BindingResult bindingResult) {
if (bindingResult.hasErrors()) {
return TASK_EDIT_FORM;
}
taskService.updateTask(task);
return redirectTo("/tasks");
}
Проблема начинается, если я хочу отправить последнюю категорию свойств: task.category, которая является вложенным объектом, я получил следующую ошибку:
org.springframework.beans.InvalidPropertyException: Invalid property 'category[id]' of bean class [pl.java.learning.todolist.domain.task.Task]: Property referenced in indexed property path 'category[id]' is neither an array nor a List nor a Map; returned value was [Category(name=null)]
Я заметил, что метод не может обрабатывать категорию [id], которой, я полагаю, должна быть category.id? Я потратил на эту проблему несколько дней с большим количеством комбинаций (например, RequestBody, другая структура JSON (JSON.parse или JSON.stringify)), но без хороших результатов. Может быть, у кого-то была эта или похожая проблема, и он может дать мне совет, что мне делать?
С Уважением

Я нашел ответ на свою проблему, может быть, в будущем у кого-то появится подобное, поэтому я оставлю решение ниже:
Код фрагмента Javascript:
$.getJSON("/api/tasks/" + id)
.done(function(task) {
$.ajax("/api/tasks", {
data: JSON.stringify(task),
contentType: 'application/json',
type: 'POST'
});
});
Фрагмент кода контроллера метода:
@PostMapping
public void addTask(@RequestBody Task task) {
taskService.addTask(task);
}
Не знаю, хорошее ли это решение, но для моих целей пока достаточно.
С Уважением