首页 > 解决方案 > 如何从控制器中的 th:value (thymeleaf) 中检索数据?

问题描述

我需要在 Spring MVC 控制器中检索来自视图中 th:value 字段的内容。使用 RequestParam 尝试了下面的代码,但没有成功。

表格代码:

<form action="form1" method="post">
<input type="text" th:value="${personId}"/>
<input type="submit" name="btnSubmit" value="Submit">
</form>

Spring MVC 控制器

@RequestMapping(value="/form1", params = "btnSubmit", method = RequestMethod.POST)
public String formMethod (@RequestParam("personId") int personId) {
    return "";
}

注意:我知道这也可以通过 th:field 替换 th:value、在表单标签中添加 th:object 并在控制器中使用 @ModelAttribute 来实现。但这需要创建一个完整的对象并将表单与对象紧密结合。不想那样做。想要一些更简单的东西,只需要一个字段,让表单绑定到另一个对象。所以,想知道当它是一个 th:value 时是否可以检索该数据(或者其他可以与单个字段一起使用的东西)。

标签: javaspringspring-mvcthymeleaf

解决方案


您不需要使用th:value将数据返回给控制器。您需要th:object在标签中配置form

<form action="form1" method="post" th:object="${person}">

然后您将其更改th:valuename = "personId"

<input type="text" name="personId" />

在控制器中,您需要更改参数方法:

@RequestMapping(value="/form1", params = "btnSubmit", method = RequestMethod.POST)
public String formMethod (@Valid Person person, Model Model) {
    return "";
}

Obs.: 如果你的 html 页面中有更多的提交按钮,你可以使用params = "btnSubmit=Submit".

了解更多: https ://www.thymeleaf.org/doc/tutorials/3.0/thymeleafspring.html


推荐阅读