使用Thymeleaf进行Spring启动:对象使用具有现有值的对象而不覆盖它们

时间:2015-09-17 17:56:02

标签: forms spring-boot thymeleaf

我正在尝试将我的实体类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的字段,即使它之前不为空,我也会在之前打印出来表格确认)。我希望表单不会更改我不会告诉它更改的值。

1 个答案:

答案 0 :(得分:2)

一个简单的解决方案是将createdAt字段作为隐藏字段添加到表单中,并填充其值。

也许更好的解决方案是使用仅包含要以此特定形式更新的字段的数据传输对象。这样您就可以确定要更新的字段将会更新,而您想要保留的字段将是独立的。