java - 如何在 Spring-MVC 中将数据从视图传递到控制器?
问题描述
我有一个作为 JSON 的对象列表,位于 workLists 中。我通过在 workLists 上使用每个迭代创建了一个表并在 thymeleaf 中创建一个表?
现在我如何将work
单个对象传递回控制器,我尝试使用的是th:object
我认为它可以工作,但在控制器端空值即将到来。
百里香叶部分
<tr th:each="work , status : ${workLists}">
<td scope="row" th:text="${status.count}"></td>
<td>
<form th:action="@{/edit/work}" th:object="${work}" method="post">
<button type="submit" class="dropdown-item">Edit</button>
</form>
</td>
</tr>
控制器部分
@PostMapping("/edit/work")
public String editWork(@ModelAttribute("work") GetWorkkDto getWorkDto){
logger.debug(" Inside of edit work method");
return "listOfwork";
}
解决方案
您需要为控制器提供 2 个属性,即 workLists 和一个作品。它会是这样的:
@GetMapping("/edit/work")
public String editWork(Model model){
model.addAttribute("workLists", workLists);
model.addAttribute("workDTO", new Work());
return "listOfwork";
}
然后在您的 HTML 页面中通过隐藏字段提供所选作品的值:
<table>
<tr th:each="work, stat : ${workLists}">
<td>
<form action="#" th:action="@{/edit/work}" th:object="${workDTO}" method="post">
<input type="hidden" th:attr="name='id'" th:value="${work.id}" />
<input type="hidden" th:attr="name='name'" th:value="${work.name}" />
<input type="hidden" th:attr="name='description'" th:value="${work.description}" />
<p th:text="'Id : '+${work.id}"></p>
<p th:text="'Name : '+${work.name}"></p>
<p th:text="'Description : '+${work.description}"></p>
<p><input type="submit" value="Submit" /> <input type="reset" value="Reset" /></p>
</form>
</td>
</tr>
</table>
你可以在提议的代码中看到我通过name属性将work.id的值赋给了workDTO.id(不要问我为什么会这样)
最后,您在控制器中检索对象(就像您已经做的那样),如下所示:
@PostMapping("/edit/work")
public String editWork(@ModelAttribute Work workDTO, Model model){
System.out.println(workDTO.toString());
model.addAttribute("workLists", workLists);
model.addAttribute("workDTO", new Work());
return "listOfwork";
}
推荐阅读
- r - 在多面 ggplot 上注释不同的方程
- c - realloc 是否改变了它的论点
- docker - 如何在 Apache 中为 Mautic Docker 更新 HTTP_HOST
- java - Java中的内存使用
- google-apps-script - 左侧转移无效。(第 1 行,“测试”文件)
- php - 测试 Laravel Flash 会话
- testing - Testcafe - useRole 问题 - 需要更简洁的登录方式
- jenkins - 如何使用 Bitbucket Branch Source 插件在 Jenkins 中访问 webhook 请求的正文数据(事件有效负载)?
- symfony - 在匹配 2.2 的版本中找不到包 api-platform/api-pack
- database - 在文本输入中获取的值需要作为参数传递以插入数据库