spring roo模型绑定未经验证

时间:2012-06-15 12:12:03

标签: validation spring-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字段有点不同,从DB的视图来看,此字段不能为空,因为未来的业务逻辑可能会引用它,但从用户的视图来看,它永远不会出现在create admin form中,因为它会稍后由persist代码填写。问题是AdminController.create无法验证新创建的Admin对象,因为此时createTime仍然是null

那么我该怎么做才能创造Admin成功?

2 个答案:

答案 0 :(得分:0)

您可以编写自己的Validator,即AdminValidator,并使其实现Validator(org.springframework.validation.Validator)并在您的控制器方法中使用它。 有关详细信息,请参阅此文章http://www.dzone.com/tutorials/java/spring/spring-form-validation-1.html

答案 1 :(得分:-1)

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

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