在 Play 中创建模型时!2.x,您可以使用@Constraints.Required
和@Formats.NonEmpty
。据我了解,它们是相同的,但ZenTasks 示例在同一领域使用它们,所以我可能错了。但为什么?
public class User extends Model {
@Id
@Constraints.Required
@Formats.NonEmpty
public String email;
...
}
在 Play 中创建模型时!2.x,您可以使用@Constraints.Required
和@Formats.NonEmpty
。据我了解,它们是相同的,但ZenTasks 示例在同一领域使用它们,所以我可能错了。但为什么?
public class User extends Model {
@Id
@Constraints.Required
@Formats.NonEmpty
public String email;
...
}
约束和格式具有完全不同的目标。一次用于格式化,另一个用于验证,所以
@Constraints.Required
是一个验证,它确保值不为空。@Formats.NonEmpty
是一个格式化程序,它修剪输入,如果字符串的长度为 0 ( text.trim().isEmpty()
),则返回 null。所以该值设置为null。之后,Required-annotation 就可以完成这项工作。因此,两者都使用通常很有用,但并非在所有情况下都使用。
@Constraints.Required
检查是否发送了属性,因此您可以只发送空space
字符,它将是有效的@Formats.NonEmpty
另外检查修剪的值是否不为空@Formats.NonEmpty
转换结果首先@Constraints.Required
检查转换的结果。
例如:字符串" "
将通过,因此,@Constraints.Required
添加@Formats.NonEmpty
将首先修剪" "
并可能引发错误。null
@Contraints.Required