我在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;
...
答案 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是官方文档,详细介绍了这一点。