【问题标题】:ebean validation in play framework 2.5播放框架2.5中的ebean验证
【发布时间】:2016-11-20 04:00:04
【问题描述】:

我正在查看他们页面上提供的示例代码:

@Entity
public class Task extends Model {

    @Id
    @Constraints.Min(10)
    public Long id;

    @Constraints.Required
    public String name;

    public boolean done;

    @Formats.DateTime(pattern="dd/MM/yyyy")
    public Date dueDate = new Date();

    public static Finder<Long, Task> find = new Finder<Long,Task>(Task.class);
}

@Constraints.Min(10) 似乎不起作用。当我尝试使用约束开发我的模型时,它没有在保存时触发验证。示例代码:

@Entity
public class Company extends Model{

    private static final long serialVersionUID = 1L;

    @Id
    public Long id;

    @Column(columnDefinition = "varchar(100)", nullable false)
    @Constraints.Required
    @Formats.NonEmpty
    @Constraints.MinLength(10)
    @Constraints.MaxLength(10)
    public String name;

}

我尝试运行这段代码:

Company company = new Company();

company.name="";
company.save()

虽然名称是空字符串,但它会将数据保存到数据库中。

【问题讨论】:

    标签: playframework ebean playframework-2.5


    【解决方案1】:

    约束用于表单绑定验证,而不是直接字段设置。

    private static final Form<Company> companyForm = formFactory.form(Company.class);
    

    所以在渲染视图的控制器方法中。

    Form<Company> filledForm = companyForm.fill(company);
    view.render(filledForm);
    

    在处理表单回发到服务器的控制器方法中。

    Form<Company> boundForm = companyForm.bindFromRequest();
    if (boundForm.hasErrors()) {
        // This will happen if there is validation errors, you can also add a validate method to Company for more complex validation
        return badRequest(views.html.form.render(boundForm));
    } else {
        Company company = boundForm.get();
        return ok("Got company " + company);
    }
    

    【讨论】:

    • 到底有没有做ebean的字段验证?
    • 抱歉回复晚了。似乎您可以使用javax.validation.constraints 约束,例如@Size(min=10)(用于字符串等长度),或者在您的情况下(一个数字),@Min(10) 与现代版本的ebean。我还没有测试它,但它似乎会做你想要的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多