我有一个表,该表包含从列表中生成的多个元素,并且该列表中的每个表元素都有一个按钮。单击该按钮,将有一个发布提交请求,该请求应将该表数据元素中的值绑定到Spring Boot中的@ModelAttribute对象。 问题是我可以映射整个列表,但是我只想绑定按下按钮的表元素。
<div class="table-responsive">
<form th:action="@{/saveAd}" th:object="${object}" method="POST">
<table class="table table-sm table-hover">
<thead class="thead-dark">
<tr>
<th>Image</th>
<th>Title</th>
<!-- <th style="width: 16.66%">Link</th> -->
<th>Price</th>
<th>City</th>
</tr>
</thead>
<tbody id="myTable">
<th:block th:each="element, itemStat: *{lista}">
<tr
th:onclick="'javascript:rowClicked(\'' + *{lista[__${itemStat.index}__].url} + '\');'">
<input type="hidden" readonly="readonly"
th:name="?"
th:value="${element.getUrl()}" />
<td>
<input type="hidden" readonly="readonly" th:name="img" th:value="${element.getImg()}" />
<img th:src="*{lista[__${itemStat.index}__].img}" class="size" name="img" />
</td>
<td>
<input type="hidden" readonly="readonly" th:name="?" th:value="${element.getTitle()}" />
<span th:text="*{lista[__${itemStat.index}__].title}"></span>
</td>
<td>
<input type="hidden" readonly="readonly" th:name="?" th:value="${element.getPrice()}" />
<span th:text="*{lista[__${itemStat.index}__].price}"></span>
</td>
<td>
<input type="hidden" readonly="readonly" th:name="?" th:value="${element.getCity()}" />
<span th:text="*{lista[__${itemStat.index}__].city}"></span>
</td>
<td><input class="btn btn-danger" type="submit"
value="Save"></td>
</tr>
</th:block>
</tbody>
</table>
</form>
</div>
控制器:
@RequestMapping(path = "/saveAd", method = RequestMethod.POST)
public String saveAd(@ModelAttribute("Value") ListCreationAutovitDto listCreationAutovitDto) {
return "home";
}
我为每个td有一个隐藏的输入类型,它应该映射值,但是我试图以不同的方式命名它,但我无法使其工作。有什么方法可以只绑定按下按钮时的值?
答案 0 :(得分:0)
想法1:使每个td
包含一个指向控制器方法的form
。然后,通过使用表单中的隐藏input
字段将要传递的值绑定到模型。然后,每个按钮都会对其所在的表单进行提交。
想法2:如果您要将json映射到应用程序中的java对象,则可以在JavaScript中构造json请求主体,以仅包含该请求所需的内容