未经验证的春季 Roo 模型绑定



这是我的模型Admin

@RooJavaBean
@RooToString
@RooJpaActiveRecord
public class Admin {
    @NotNull
    @Column(unique = true)
    private String name;
    @NotNull
    private String password;
    @NotNull
    @DateTimeFormat(style = "M-")
    private Timestamp createTime;
    @Transactional
    public void persist(){
        if (this.entityManager == null) this.entityManager = entityManager();
        this.password = DigestUtils.sha256Hex(this.password);
        this.createTime = new Timestamp(new java.util.Date().getTime());
        this.entityManager.persist(this);
    }
}

createTime字段有点不同,从数据库的角度来看,这个字段不能为空,因为未来的业务逻辑可能会引用它,但从用户的角度来看,它永远不会出现在create admin form中,因为它稍后将由persist代码填充。问题是AdminController.create无法验证新创建的Admin对象,因为此时createTime仍然null

那么,我该怎么做才能使Admin的创造取得成功呢?

您可以避免实体中的@NotNull(管理员)

它仅用于创建对象。如果每个对象都是从数据库中获取的,除了要创建的对象(在 Web 表单中或通过 DataOnDemand 在测试中),则对应用程序来说不会有问题。

最新更新