我试图绑定来自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
类(两个视图都是准确的)相同的情况除了表单类型是Login
或NewUser
)。更奇怪的是,如果我更改createUser
,createUserPost
和视图以使用Login
类,它就会很好地绑定。
有谁知道为什么会这样?
答案 0 :(得分:0)
事实证明,由于某些原因,Play(或Java)不喜欢在同一个Java文件中有多个静态类。一旦我们将这两个类重构为他们自己的文件,它就可以正常工作。