我在Spring编程并使用Thymeleaf作为我的视图,并且我正在尝试创建一个用户可以更新其个人资料的表单。我有一个个人资料页面,其中列出了用户的信息(名字,姓氏,地址等),并且有一个链接显示"编辑个人资料"。单击该链接后,它会将它们转到可以编辑其配置文件的表单。表格由他们可以输入的文本字段组成,就像您的标准注册表单一样。
一切正常,但我的问题是,当点击该链接时,如何将用户的信息添加到输入字段以使其已经存在,并且他们只修改他们想要更改的内容而不必重新输入所有字段。
这应该像标准"编辑个人资料"页。
以下是我的edit_profile.html页面的一部分:
名字:
以下是返回edit_profile.html页面的视图控制器方法:
@RequestMapping(value = "/edit", method = RequestMethod.GET)
public String getEditProfilePage(Model model) {
model.addAttribute("currentUser", currentUser);
System.out.println("current user firstname: " + currentUser.getFirstname());
model.addAttribute("user", new User());
return "edit_profile";
}
currentUser.getFirstname()打印出预期值,但我在表单中输入空白值。
感谢。
答案 0 :(得分:4)
我有点困惑,你正在将currentUser和一个新的用户对象添加到模型地图中。
但是,如果currentUser是目标对象,那么您只需:
<input type="text" name="firstname" value="James" th:value="${currentUser.firstname}" />
从文档中: http://www.thymeleaf.org/doc/tutorials/2.1/usingthymeleaf.html
答案 1 :(得分:3)
通过完全删除th:field
并使用th:value
存储默认值,并使用html name
和id
作为模型字段来解决问题。因此name
和id
的行为与th:field
相似。
答案 2 :(得分:1)
我没有带有输入元素的表单,只有一个按钮应该调用特定的Spring Controller方法并在列表中提交动物的ID(所以我有一个已经在我的页面上显示的anmials列表)。我花了一些时间来弄清楚如何在表单中提交此ID。这是我的解决方案:
所以我开始使用只有一个输入字段的表单(我最后会更改为隐藏字段)。在这种情况下,当然在提交表单后id将为空。
<form action="#" th:action="@{/greeting}" th:object="${animal}" method="post">
<p>Id: <input type="text" th:field="*{id}" /></p>
<p><input type="submit" value="Submit" /> </p>
</form>
以下内容未引发错误,但未提交animalIAlreadyShownOnPage的ID。
<form action="#" th:action="@{/greeting}" th:object="${animal}" method="post">
<p>Id: <input type="text" th:value="${animalIAlreadyShownOnPage.id}" /></p>
<p><input type="submit" value="Submit" /> </p>
</form>
在另一篇帖子中,用户推荐使用&#34; th:attr&#34;属性,但它也没有工作。
这终于奏效 - 我只是添加了name元素(&#34; id&#34;是Animal POJO中的String属性)。
<form action="#" th:action="@{/greeting}" th:object="${animal}" method="post">
<p>Id: <input type="text" th:value="${animalIAlreadyShownOnPage.id}" name="id" /></p>
<p><input type="submit" value="Submit" /> </p>
</form>