2013-11-04 38 views
0

我試圖綁定POST的一些數據,但由於某種原因,它一直拋出一個異常。奇怪的是,我有一個幾乎完全相同的對象。我的一些代碼如下:Java拋出播放異常bindFromRequest

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)。更奇特的是,如果我更改createUser,createUserPost以及使用Login類的視圖,它會很好地結合。

有沒有人知道爲什麼會發生這種情況?

回答

0

因此,事實證明,由於某種原因,Play(或Java)不喜歡在同一個Java文件中擁有多個靜態類。一旦我們將兩個類重構爲自己的文件,它就可以正常工作。