2013-09-22 34 views
1

我有一個登錄表單:添加全局誤差在驗證功能

public static class LoginForm { 
    @Constraints.Required 
    public String email; 
    @Constraints.Required 
    public String password; 
} 

,我需要驗證用戶是否存在或有效。所以我的驗證功能是:

public List<ValidationError> validate() { 
    List<ValidationError> errors = new ArrayList<ValidationError>(); 
    User user = User.findByEmail(email); 
    if (user == null || !Hash.checkPassword(password, user.passwordHash)) { 
     errors.add(new ValidationError("email", "Invalid email")); 
     return errors; 
    } else if (!user.validated) { 
     errors.add(new ValidationError("email", "Not validated email")); 
     return errors; 
    } 
    return null; 
} 

但如何使這些錯誤全球?

回答

2

好吧,我找到了解決方案。我必須傳遞給ValidationError第一個參數的concascuctor作爲空字符串。所以整個代碼看起來像:

public static class LoginForm { 
    @Constraints.Required 
    public String email; 
    @Constraints.Required 
    public String password; 

    public List<ValidationError> validate() { 
     List<ValidationError> errors = new ArrayList<ValidationError>(); 
     User user = User.findByEmail(email); 
     if (user == null || !Hash.checkPassword(password, user.passwordHash)) { 
      errors.add(new ValidationError("", "Invalid email")); 
      return errors; 
     } else if (!user.validated) { 
      errors.add(new ValidationError("", "Not validated email")); 
      return errors; 
     } 
     return null; 
    } 
}