Java Play! 2 - 密码限制

时间:2012-08-02 12:57:05

标签: java constraints playframework-2.0

我在Play中找不到@Equal约束! 2。

我查看了API http://www.playframework.org/documentation/api/2.0.2/java/index.html

我想要一个SignupForm来检查密码是否相等。我不相信我必须为这样一个常见问题编写自己的约束。

类似的东西:

...
@Min(6)
public String password;
@Equal(password)
public String confirmPassword;
...

3 个答案:

答案 0 :(得分:3)

我在JSR 303中的其他Java框架中没有任何@Equal约束。

要检查密码,不难:在表单对象中,只需编写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

答案 1 :(得分: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

找到了有用的信息

答案 2 :(得分:0)

以下代码返回全局错误。

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

但下面的代码段更具体地返回了特定于confirmPassword字段的错误。

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

Here是官方文档,详细介绍了这一点。