【问题标题】:Play Framework Bean Validation of Primitive TypesPlay 基本类型的框架 Bean 验证
【发布时间】:2015-03-17 17:22:09
【问题描述】:

我正在使用以下类来验证此处所述的表单提交:https://www.playframework.com/documentation/2.3.4/JavaForms

public class ExampleForm {
    @Required
    public int height;
    public String payload;
}

当我执行 bindFromRequest() 时,@Required 约束被忽略。但是,当我将原始类型更改为盒装类型时,它会起作用:

public class ExampleForm {
    @Required
    public Integer height;
    public String payload;
}

bean 验证是否不适用于原始类型?

【问题讨论】:

    标签: playframework playframework-2.0 bean-validation


    【解决方案1】:

    解释很简单:数据库允许 NULL 值,而原始类型不允许。由于 Form 实际上是 UI 和 DB 模型之间的某种连接器,因此它需要对象而不是原语。

    @Required 在第一步检查object 是否为空且 int 是否为空。

    作为一个规则,在模型和表单中都使用Integer 而不是int,您的验证器将始终按预期工作。

    【讨论】:

    • 谢谢。这确实有道理。只是一句话:我的模型没有绑定到数据库。它只是一个辅助模型,可以轻松验证表单输入。所以我没有考虑数据库。
    • 无论如何我只是假设 Play 的创作者不想包含两种不同的方式来做同样的事情 ;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-08
    • 2014-04-04
    • 2018-10-26
    • 1970-01-01
    • 1970-01-01
    • 2015-02-11
    • 1970-01-01
    相关资源
    最近更新 更多