Passing object to controller from Form

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

Passing object to controller from Form

Matt Shallow
Not sure how to do this. I am using th:each which has a number of products. I would like to send each product to controller = but I keep getting a null value. Here is the code I have.

<div th:each="product : ${productList}">
                                        <form class="feat_prod_box" th:object="${p}" th:action="@{/add}" method="post">
                                               
                                                        <div class="prod_img">
                                                               
                                                        </div>
                                                        <div class="prod_det_box">
                                                                <div class="box_top"></div>
                                                                <div class="box_center">
                                                                        <div class="prod_title" th:text="${product.name}">Christmas
                                                                                Package</div>
                                                                        <p class="details">
                                                                                Item1: .
                                                                        </p>
                                                                        <p class="details">
                                                                                Item2: .
                                                                        </p>
                                                                        <p class="details">
                                                                                Item3: .
                                                                        </p>
                                                                        <p class="details">
                                                                                Price: .
                                                                        </p>

                                                                        <div class="clear"></div>
                                                                </div>

                                                                <div class="box_bottom"></div>
                                                        </div>
                                                        <div class="clear"></div>
                                               
                                                <input type="hidden" th:field="*{product}"></input>
                                                <input type="submit" value="add to cart"></input>
                                        </form>
                                </div>

and my controller class:

@PostMapping("/add")
    public String addProduct(@ModelAttribute("p") Product p, Model model) {
                               
                count++;
               
                System.out.println(p.getName());
                               
        return index(model);
    }


I add model attribut "p" elsehwere. As I said i'd like to be able to send the product object from productList but I cant figure it out. Any help would be great.
Reply | Threaded
Open this post in threaded view
|

Re: Passing object to controller from Form

Matt Shallow
Got it working. It seems you cant use th:field with th:value so I kept value and used th:name. Now the object is being sent to controller.