Нужна помощь с POST в Spring

Рейтинг: 0Ответов: 0Опубликовано: 08.01.2023

Я выводил запись из таблицы 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 Возможно нельзя таким образом брать данные в контроллере, не могу додуматься до решения

Ответы

Ответов пока нет.