thymeleaf:th:使用th:field时忽略值

时间:2015-01-09 11:02:03

标签: thymeleaf

我有一个表单,我想编辑一些用户数据。 因此,已经存储的数据被放置为:值并且在发送之后我使用spring验证进行验证并且想要在错误的输入上返回表单。我希望输入字段具有用户输入的值,但它总是为我提供存储的输入。

输入字段的外观如何

<input type="text" th:value="${product.name}" th:field="*{name}" th:errorclass="fieldError"/>

如果首次加载表单,则输入字段应具有已存储数据的值。

如果在提交后加载并且出现验证错误,则输入字段应具有用户输入的值。

有办法吗?

谢谢!

4 个答案:

答案 0 :(得分:16)

属性 th:field 将替换输入<中 id 名称的属性/ strong> tag。

相反,使用普通 th:id th:value th:name 而不使用 th:field 。然后你会得到你想要的东西。

然后它看起来像:

<input type="text" th:value="${product.name}" th:name="name" th:id="name" th:errorclass="fieldError"/>

类似的答案在这里:How to set thymeleaf th:field value from other variable

答案 1 :(得分:2)

因为属性th:field是th:name和th:value的组合 因此,要么使用此:

<input type="text" th:value="${product.name}" th:name="name" th:errorclass="fieldError"/>

或者这个:

<input type="text" th:field="*{name}" "th:errorclass="fieldError"/>

答案 2 :(得分:1)

使用th:字段或值,id和name都可以。如果你使用th:field,你可以这样写:

<input type="text" th:field="${product.name}" th:value="${product.name}" "th:errorclass="fieldError"/>

答案 3 :(得分:0)

如果验证错误后输入值错误,则您的控制器中有错误(您将错误的值设置为 *{name})。