Java在playFromRequest上抛出异常

时间:2013-11-04 16:13:23

标签: java binding playframework-2.0

我试图绑定来自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类(两个视图都是准确的)相同的情况除了表单类型是LoginNewUser)。更奇怪的是,如果我更改createUsercreateUserPost和视图以使用Login类,它就会很好地绑定。

有谁知道为什么会这样?

1 个答案:

答案 0 :(得分:0)

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