Spring 使用 Thymeleaf 启动 th:object 使用具有现有值的对象而不覆盖它们
Spring boot with Thymeleaf th:object use an object with existing values without overriding them
我正在尝试将我的实体 class User
用作表单对象。
@Entity
@Table(name = "users")
public class User implements Serializable {
@Column(unique = true, nullable = false)
@Id
private int id;
@Column(name = "username")
private String username;
@Column(name = "created_at", nullable = false)
private Timestamp createdAt;
// Other variables, getters and setters...
}
观点:
<form th:action="@{/users/{id}/save(id=${user.id})}" th:method="POST" th:object="${user}">
<label for="username">Vartotojo vardas</label>
<input type="text" id="username" name="username" th:value="${user.username}" th:field="*{username}"/>
<button type="submit" class="btn btn-success" th:text="Saugoti"></button>
</form>
现在,当我显示包含该表单的页面时,我传递了一个名为 "user" 的对象以在 th:value
中使用。
我想实现什么?用户包含一个名为createdAt
的字段提交表单后它变为空,即使它之前不是空的(我打印出来在我看来之前的表格确认)。我希望表单不更改我不告诉它更改的值。
一个简单的解决方案是将 createdAt 字段作为隐藏字段添加到您的表单中,并填充其值。
也许更好的解决方案是使用一个数据传输对象,该对象仅包含您要在此特定表单中更新的字段。这样您就可以确定要更新的字段将得到更新,而您想要保留的字段将单独保留。
我正在尝试将我的实体 class User
用作表单对象。
@Entity
@Table(name = "users")
public class User implements Serializable {
@Column(unique = true, nullable = false)
@Id
private int id;
@Column(name = "username")
private String username;
@Column(name = "created_at", nullable = false)
private Timestamp createdAt;
// Other variables, getters and setters...
}
观点:
<form th:action="@{/users/{id}/save(id=${user.id})}" th:method="POST" th:object="${user}">
<label for="username">Vartotojo vardas</label>
<input type="text" id="username" name="username" th:value="${user.username}" th:field="*{username}"/>
<button type="submit" class="btn btn-success" th:text="Saugoti"></button>
</form>
现在,当我显示包含该表单的页面时,我传递了一个名为 "user" 的对象以在 th:value
中使用。
我想实现什么?用户包含一个名为createdAt
的字段提交表单后它变为空,即使它之前不是空的(我打印出来在我看来之前的表格确认)。我希望表单不更改我不告诉它更改的值。
一个简单的解决方案是将 createdAt 字段作为隐藏字段添加到您的表单中,并填充其值。
也许更好的解决方案是使用一个数据传输对象,该对象仅包含您要在此特定表单中更新的字段。这样您就可以确定要更新的字段将得到更新,而您想要保留的字段将单独保留。