在 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