如何将默认值添加到Thymeleaf中的输入字段
我在Spring中编程,并使用Thymeleaf作为我的视图,并试图创建一个用户可以更新其配置文件的表单。我有一个配置文件页面,列出用户的信息(名字,姓氏,地址等),并有一个链接,指出“编辑配置文件”。当点击该链接时,它会将它们带到可以编辑其个人资料的表单中。表单由可输入的文本字段组成,就像您的标准注册表单一样。如何将默认值添加到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( )打印出预期值,但是我在表单中获得空白输入值。
谢谢。
通过完全消除th:field
,而是使用th:value
来解决问题存储默认值,并为模型字段存储html name
和id
。因此name
和id
的行为如同th:field
。
我有点困惑,你将currentUser和new'd用户对象添加到模型映射中。
但是,如果currentUser是目标对象,你只是做:
<input type="text" name="firstname" value="James" th:value="${currentUser.firstname}" />
从文档: http://www.thymeleaf.org/doc/tutorials/2.1/usingthymeleaf.html
我没有一个带有输入元素的表单,但只有一个按钮应该调用特定的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>
在另一篇文章中,用户推荐了“th:attr”属性,但它也不起作用。
这终于奏效了 - 我只是添加了名称元素(“id”是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>
对于其他焦点的区别是添加了属性名称 – Babu
不,我想显示对象“currentUser”的当前信息。输入新字段后,它们将存储在“用户”中,并且“用户”对象将作为PUT请求发送以更新字段。 – Kingamere
然后你试图将两个不同的状态绑定到一个字段,只有这样,我才能看到正在完成的是通过一些JavaScript欺骗。 – dardo