0

我希望在我的 validate() 方法上有特定的行为(比如我可以使用 groups 注释的那个),如果它被调用的话

Form<User> loginForm = form(User.class, User.Login.class).bindFromRequest();` 

或开

Form<User> registerForm = form(User.class, User.Register.class).bindFromRequest();

用户模型:

@Entity
public class User extends Model {

    public interface Register {}
    public interface Login{}        

    @Required(groups = {Register.class, Login.class})
    public String username;

    @Required(groups = {Register.class, Login.class})
    public String password;

    public List<ValidationError> validate() {       
       ... // Here I would like to distinguish User.Login.class from User.Register.class
    }
}

应用控制器

public static Result loginSubmit(){
    Form<User> loginForm = form(User.class, User.Login.class).bindFromRequest();
}

public static Result registerSubmit(){
    Form<User> registerForm = form(User.class, User.Register.class).bindFromRequest();
}
4

1 回答 1

0

group 参数没有传递给validate()方法,所以我认为这是不可能的。这不太方便,但您可以validate自己调用(或其他一些验证方法)。

用户模型:

public class User extends Model
{
  public List<ValidationError> validate(Class group) {
    if (group == Login.class) {
      ...
    } else if (group == Register.class) {
      ...
    }
  }
}

控制器:

public static Result loginSubmit(){
  Form<User> loginForm = form(User.class, User.Login.class).bindFromRequest();
  if (!loginForm.hasErrors()) {
    User user = loginForm.get();
    List<ValidationError> errors = user.validate(User.Login.class);
    ...
  }
}
于 2014-01-28T17:47:50.197 回答