iec*_*fly 4 validation playframework-2.0
基本上我有一个以下的表格类.
public static class BasicForm {
@Required
public String name;
@Required
@Email
public String email;
@Required
public String password;
@Required
public String confirmPassword;
public List<ValidationError> validate() {
if (User.findByEmail(email) != null) {
List<ValidationError> validationErrorList = new ArrayList<ValidationError>();
validationErrorList.add(new ValidationError("email", "error.alreadyexists", new ArrayList<Object>()));
return validationErrorList;
}
return null;
}
}
Run Code Online (Sandbox Code Playgroud)
如您所见,我正在尝试验证电子邮件地址的唯一性.如果电子邮件不是唯一的,我想在电子邮件字段中显示错误消息,而不是全局错误消息
实现validate()方法实现此目的的正确方法是什么?
您应该使用validate
具有以下签名的方法:
public Map<String, List<ValidationError>> validate()
Run Code Online (Sandbox Code Playgroud)
这样您可以将错误添加到单个字段,如下所示:
Map<String, List<ValidationError>> errors = null;
if (emailIsBad) {
errors = new HashMap<String, List<ValidationError>>();
List<ValidationError> list = new ArrayList<ValidationError>();
list.add(new ValidationError("email", "email is bad"));
errors.put("email", list);
}
return errors;
Run Code Online (Sandbox Code Playgroud)
请注意,如果您应该返回一张空地图,它仍会将表格渲染为错误.如果希望validate()
方法成功,则需要返回null.