2

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

public class User extends Model {

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

    ...
}
4

3 回答 3

6

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

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

因此,两者都使用通常很有用,但并非在所有情况下都使用。

于 2012-06-06T15:05:59.697 回答
3
  • @Constraints.Required检查是否发送了属性,因此您可以只发送空space字符,它将是有效的
  • @Formats.NonEmpty另外检查修剪的值是否不为空
于 2012-06-05T20:09:33.220 回答
1

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

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

于 2013-01-21T03:46:03.483 回答