【发布时间】:2018-09-23 01:49:54
【问题描述】:
我有一组复选框,每个复选框都代表一个“产品”的顶部。我想传递一个修改后的“产品”对象,并将选中的“浇头”存储为“selectedToppings”。
我已经尝试了下面的代码,但它不起作用。问题是我传递了一个空的“产品”对象,并且只存储了复选框值(作为“selectedToppings”)。 如何将“product”对象与“selectedToppings”一起传递?
html(片段):
<form method="post" th:object="${product}" th:action="@{/addItemToCart}">
<div class="modal-body">
<div class="card-body">
<div th:each="topping : ${product.toppings}">
<div class="custom-control custom-checkbox my-1 mr-sm-2">
<input type="checkbox" class="custom-control-input" th:id="${topping} + ${product.id}" name="toppings" th:value="${topping}" />
<label class="custom-control-label" th:for="${topping} + ${product.id}" th:text="${topping}"></label>
</div>
</div>
</div>
</div>
<div class="modal-footer">
<button type="submit" class="btn btn-block btn-success">Add to Shopping Cart</button>
</div>
</form>
控制器:
@RequestMapping(value="/addItemToCart", method=RequestMethod.POST)
public String addItemToCart(@ModelAttribute("product") Product product, @RequestParam("toppings") List<String> toppings)
{
Product newItem = product;
newItem.setSelectedToppings(toppings);
addItemToBucket(newItem);
return "redirect:/menu";
}
实体:
public class Product
{
private String id;
private String name;
private String description;
private Double price;
private List<String> toppings;
private List<String> selectedToppings;
public Product()
{
this.id = "";
this.name = "";
this.description = "";
this.price = 0.0;
this.toppings = new ArrayList<String>();
this.selectedToppings = new ArrayList<String>();
}
public Product(String id, String name, String description, Double price, List<String> toppings)
{
this.id = id;
this.name = name;
this.description = description;
this.price = price;
this.toppings = toppings;
this.selectedToppings = new ArrayList<String>();
}
//...getters & setters
}
【问题讨论】:
-
是的,您可以将多个对象传递给控制器。这会很有帮助stackoverflow.com/questions/16122257/…
-
@JaisAnkit 我有兴趣在问题的上下文中将对象传递给控制器
标签: spring-mvc spring-boot thymeleaf