如何在 Spring-MVC 中将数据从视图传递到控制器?
Posted
技术标签:
【中文标题】如何在 Spring-MVC 中将数据从视图传递到控制器?【英文标题】:How to pass data to from view to controller in Spring-MVC? 【发布时间】:2021-02-19 20:09:10 【问题描述】:我有一个 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";
【问题讨论】:
官方文档在这里spring.io/guides/gs/handling-form-submission @Dickens A S ,我没有任何字段我只想将已经创建的对象传递回控制器 “我没有任何字段” - 然后使用 javascript 框架而不是模板引擎... 【参考方案1】:您需要为控制器提供 2 个属性,即工作列表和工作。它会是这样的:
@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";
【讨论】:
以上是关于如何在 Spring-MVC 中将数据从视图传递到控制器?的主要内容,如果未能解决你的问题,请参考以下文章
如何在模板中将数据从 Flask 传递到 JavaScript?