2

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;
...
4

3 に答える 3

3

@EqualJSR 303でも、他のJavaフレームワークでも制約はありません。

パスワードをチェックするのは難しくありません: フォームオブジェクトに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 サンプルを見てください。

于 2012-08-02T15:26:30.657 に答える
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

于 2015-02-21T20:51:46.840 に答える