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

MM.*_*MM. 2 playframework playframework-2.0

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

public class User extends Model {

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

    ...
}
Run Code Online (Sandbox Code Playgroud)

nie*_*els 6

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

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

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