Нужна помощь с POST в Spring
Я выводил запись из таблицы mysql Продукты по определенному id (2) в формочку. Формочка представляет собой описание карточки товара: цена размер и т.д. Но я подумал, что неправильно будет брать данные для таблицы Корзина из input. И мне нужно выводить только id в ссылку "Добавить в корзину" и добавлять методом POST данные по id в Корзину:
Вот мой репозиторий:
public interface ProductRepository extends CrudRepository<Product, Long> {
Optional<Product> findById(int i);
}
public interface CartRepository extends CrudRepository<Cart, Long> {
}
Новый контроллер:
@GetMapping("hoody")
public String hoody(Model model) {
Optional<Product> product = productRepository.findById(2);
ArrayList<Product> res = new ArrayList<>();
product.ifPresent(res::add);
model.addAttribute("product", res);
return "hoody";
}
@PostMapping("/hoody/{id}")
public String addfromProduct(@PathVariable(value = "id") long id, @RequestParam String img, @RequestParam String name, @RequestParam Integer price, @RequestParam String item_size, @RequestParam Integer quantity, Model model) {
Product product = productRepository.findById(2).orElseThrow();
Cart cart = new Cart();
cart.setName(name);
cart.setPrice(price);
cart.setItem_size(item_size);
cart.setQuantity(quantity);
cart.setImg(img);
cartRepository.save(cart);
return "redirect:/basket";
}
@GetMapping("/basket")
public String basket(Model model) {
Iterable<Cart> carts = cartRepository.findAll();
model.addAttribute("carts", carts);
return "basket";
}
Прошлый:
@PostMapping("/hoody")
public String addfromProduct(@RequestParam String img, @RequestParam String name, @RequestParam Integer price, @RequestParam String item_size, @RequestParam Integer quantity, Model model) {
Cart cart = new Cart(name, price, item_size, quantity, img);
cartRepository.save(cart);
return "redirect:/basket";
}
Новая форма:
<title>HOODY</title>
</head>
<body>
<div th:each="el : ${product}">
<form method="post">
<a th:href="'/hoody/' + ${el.id}"><button type="submit" class="btn btn-success">Добавление товара в корзину</button></a>
</form>
</div>
</body>
Форма с input, чтобы брать данные для Cart:
<form action="/hoody" method="post">
<div th:each="el : ${product}">
<input type="text" name="name" th:value="${el.name}" class="form" readonly/>
<input type="text" name="price" class="total-price" th:value="${el.price}"/>
<input type="text" name="item_size" class="item" th:value="${el.item_size}"/>
<input class="quantity_range" name="quantity" type="number" min="1" max="5" th:value="${el.quantity}">
<input type="text" name="img" th:value="${el.img}"/>
<button type="submit" class="btn btn-success">Добавление товара в корзину</button>
</div>
</form>
Помогите, пожалуйста, разобраться в том, почему не поддерживается POST Возможно нельзя таким образом брать данные в контроллере, не могу додуматься до решения
Источник: Stack Overflow на русском