2012-08-02 32 views

回答

3

我沒有任何@Equal contraint其他Java框架既不在JSR 303

要檢查密碼,這並不難:在你的表單對象,只是寫public String validate()方法:

public class SignupForm { 

    @Min(6) 
    public String password; 

    @Min(6) 
    public String confirmPassword; 

    public String validate() { 
     if(!password.equals(confirmPassword)) { 
      return "Password mismatch"; 
     } 
     return null; 
    } 

} 

zentask sample看看,在這個class

+0

啊,好的非常感謝你。 – 2012-08-02 15:31:20

0

如果有人從谷歌這個問題絆倒。這是我做過什麼

@MinLength(6) 
    public String password; 

    @MinLength(6) 
    public String confirmPassword; 

    public List<ValidationError> validate(){ 
     List<ValidationError> errors = new ArrayList<ValidationError>(); 
     if(!this.password.equals(this.confirmPassword)){ 
      errors.add(new ValidationError("password", "Passwords must match.")); 
     } 
     return errors.isEmpty() ? null : errors; 
    } 

你必須使用@MinLength(6)而不是@Min(6),我認爲這是因爲密碼是一個字符串。如果有人未輸入匹配的密碼,則返回驗證錯誤列表將顯示爲表單中的錯誤。否則,他們不會看到什麼是錯的。

我發現這裏https://www.playframework.com/documentation/2.2.x/JavaForms

0

有用的信息,下面的代碼返回全局錯誤。

public String validate() { 
    if(!password.equals(confirmPassword)) { 
     return "Password mismatch"; 
    } 
    return null; 
} 

但下面的代碼片段更具體地返回confirmPassword字段的具體錯誤。

Here是官方文檔,對此進行了更多描述。