0

我正在尝试从 a 绑定一些数据POST,但由于某种原因,它不断抛出异常。奇怪的是,我有一个几乎相同的对象,绑定得很好。我的一些代码如下:

public static Result login() {
return ok(
  login.render(Form.form(Login.class))
);
}


public static Result authenticate() {
  Form<Login> loginForm = Form.form(Login.class).bindFromRequest();
  // Do stuff
}

public static Result createUser() {
        return ok(createUser.render(Form.form(NewUser.class)));
}

public static Result createUserPost() {
        Form<NewUser> newUserForm = Form.form(NewUser.class).bindFromRequest();
        // Do stuff
}

public static class Login {
  public String userName;
  public String password;
  public String validate(){
    Logger.info("userName: %s, Password: %s", userName, password);
    if (User.validate(userName, password) == null){
      return "Invalid username or password";
    }
    return null;
  }
}

public static class NewUser {
        public String userName;
        public String password;

        public String validate() {
                // TODO: Better error messages
                if (Validation.username(userName) == null && Validation.password(password) == null) {
                        return null;
                }
                else {
                        return "The username or password is not valid.";
                }
        }
}

由于某种原因,该authenticate方法Login很好地绑定了类,但该createUserPost方法没有绑定NewUser类(两个视图完全相同,除了 Form 类型是Loginor NewUser)。更奇怪的是,如果我更改createUsercreateUserPost和视图以使用Login该类,它就可以很好地绑定。

有谁知道为什么会这样?

4

1 回答 1

0

所以事实证明,出于某种原因,Play(或 Java)不喜欢在同一个 Java 文件中包含多个静态类。一旦我们将这两个类重构为它们自己的文件,它就可以正常工作了。

于 2013-11-04T16:13:22.983 回答