У вас есть разногласия между тем, что вы хотите, и тем, что у вас есть. Например:
В вашем модале есть много выражений, таких как: ${selectedCar.name}
. В вашем контроллере вы устанавливаете model.addAttribute("selectedCar", new Car());
, что означает, что любое выражение, в котором вы используете ${selectedCar}
, будет просто использовать пустой объект.
В вашем ajax вы звоните по этому адресу: url: "/car/" + id,
. Ваш контроллер для этого URL не возвращает никаких данных, он просто возвращает перенаправление return "redirect:/main";
на другую страницу. (И в любом случае JavaScript ничего не делает с возвратом, просто отображает модал.)
Я думаю, что самый простой способ исправить это было бы:
В главном контроллере измените его, чтобы вернуть выбранный автомобиль:
@ResponseBody
@RequestMapping("/car/{id}")
public Car car(@PathVariable("id") String id, Model model) {
Car car = null;
// car = findCarById(id); <-- implement this
return car;
}
И, во-вторых, измените ваш ajax, чтобы установить возвращаемые атрибуты.
function openModal(id) {
$.ajax({
url: "/car/" + id,
success: function (data) {
// Here, you should update the html with your selected car attributes
$('#carModalLabel').text(data.name);
$("#carViewModal").modal("show");
}
});
}