@ Constraints.Required和@Formats.NonEmpty之间有什么区别?

时间:2012-06-05 18:39:42

标签: playframework playframework-2.0

在Play中创建模型时! 2.x,您可以使用@Constraints.Required@Formats.NonEmpty。据我所知,它们是相同的,但ZenTasks sample在同一领域使用它们,所以我可能错了。但为什么呢?

public class User extends Model {

    @Id
    @Constraints.Required
    @Formats.NonEmpty
    public String email;

    ...
}

3 个答案:

答案 0 :(得分:6)

约束和格式具有完全不同的目标。一次用于格式化,另一次用于vaildation,所以

  • @Constraints.Required是一种验证,可确保该值不为空。
  • @Formats.NonEmpty是一个格式化程序,它修剪输入,如果字符串的长度为0(text.trim().isEmpty()),则返回null。因此该值设置为null。之后,Required-annotation可以完成这项工作。

因此,使用两者通常很有用,但不是在所有情况下都是如此。

答案 1 :(得分:3)

  • @Constraints.Required检查属性是否已发送,因此您只需发送空的space字符即可生效
  • @Formats.NonEmpty另外检查修剪后的值是否为空

答案 2 :(得分:1)

@Formats.NonEmpty转换结果首先@Constraints.Required检查转换为。

例如: 字符串" "将通过@Constraints.Required,因此,添加@Formats.NonEmpty将首先将" "修改为null@Contraints.Required可能会触发错误。