2015-07-21 308 views
0

我在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( )打印出预期值,但是我在表单中获得空白输入值。

谢谢。

回答

2

通过完全消除th:field,而是使用th:value来解决问题存储默认值,并为模型字段存储html nameid。因此nameid的行为如同th:field

3

我有点困惑,你将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

+0

不,我想显示对象“currentUser”的当前信息。输入新字段后,它们将存储在“用户”中,并且“用户”对象将作为PUT请求发送以更新字段。 – Kingamere

+0

然后你试图将两个不同的状态绑定到一个字段,只有这样,我才能看到正在完成的是通过一些JavaScript欺骗。 – dardo

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> 

在另一篇文章中,用户推荐了“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> 
+0

对于其他焦点的区别是添加了属性名称 – Babu