在Play中创建模型时! 2.x,您可以使用@Constraints.Required
和@Formats.NonEmpty
。据我所知,它们是相同的,但ZenTasks sample在同一领域使用它们,所以我可能错了。但为什么呢?
public class User extends Model {
@Id
@Constraints.Required
@Formats.NonEmpty
public String email;
...
}
答案 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
可能会触发错误。