【问题标题】:Order of JSR-303 and Validatable validation in playJSR-303 的顺序和可验证的验证
【发布时间】:2018-03-27 11:38:52
【问题描述】:

在 Play(现在是 2.6)项目中,使用了基于注释的验证(例如,@Constraints.Required)以及通过Validatable(加上@Validate)进行的验证。到目前为止,这工作得很好,但从 play 2.6 开始,两者现在默认同时执行。

这导致了不幸的结果,validate 方法(来自Validatable)现在不能再确定所有其他验证已经成功完成,所以我们必须添加各种空检查等validate 在每个注释已经标记为非空的字段上。

在 Play 2.6 中有没有办法获得这种行为,只有在所有基于注释的验证规则都成功完成后才会调用 validate()?

【问题讨论】:

    标签: java playframework playframework-2.0 bean-validation


    【解决方案1】:

    来自https://www.playframework.com/documentation/2.6.x/Migration26#form-changes:

    注意:“旧”验证方法仅在之前所有其他约束都成功后才被调用。然而,默认情况下,类级约束与任何其他约束注释同时调用——无论它们是通过还是失败。要(也)定义约束之间的顺序,您现在可以使用约束组。

    看起来是这样的:

    import javax.validation.GroupSequence;
    import javax.validation.groups.Default;
    
    @GroupSequence({ Default.class, SignUpCheck.class, LoginCheck.class })
    public interface OrderedChecks { }
    

    详情请见https://www.playframework.com/documentation/2.6.x/JavaForms#advanced-validation。

    【讨论】:

    • 谢谢,我希望有比群组更简单的解决方案,但我们很可能也会采用这种方式。
    猜你喜欢
    • 2015-01-10
    • 1970-01-01
    • 2011-10-30
    • 2018-08-15
    • 1970-01-01
    • 2012-02-08
    • 1970-01-01
    • 1970-01-01
    • 2011-07-24
    相关资源
    最近更新 更多