2016-04-14 9 views
0

bindFromRequest()を使用してビューをモデルにバインドしようとしましたが、ビューとモデルがバインドされていません。Play Framework 2.5:モデルのバインド要求のビューで 'null'が返される

これはこれはこれは、ログインビューlogin.htmlがあるモデルLogin.java

import com.avaje.ebean.Model; 

import javax.persistence.Entity; 
import javax.persistence.Id; 

@Entity 
public class Login extends Model { 

    @Id 
    public String id; 
    public String email; 
    public String password; 

} 

である私のコントローラ

package controllers; 

import play.mvc.*; 
import play.data.Form; 
import views.html.*; 
import models.Login; 
import controllers.*; 
import com.avaje.ebean.Model; 

public class LoginController extends Controller { 

    public Result authenticate() { 
     Form<Login> loginForm = Form.form(Login.class).bindFromRequest(); 

     // password value is return null. 
     System.out.println("password :: "+loginForm.get().password); 
     if (loginForm.hasErrors()) { 
      return ok(login.render("Error in login" ,Form.form(Login.class))); 
     } else { } 
    } 
} 

です:あなたを推測

 <form class="login-form" action="@routes.LoginController.authenticate" method="post"> 

     <h1><a href="@routes.LoginController.index" id="logo"><span> 
     <img src="@routes.Assets.at("/images/logo-main.jpg")" alt="PUAthletics" height="42" > 
     <link rel="shortcut icon" type="image/png" href="@routes.Assets.at("/images/logo-main.jpg")"/></span></a></h1> 
     <p class="loginMessage "> 
     @message 
     </p> 
     <input type="email" name="email" placeholder="Email" value="@form("email").value" /> 
     <input type="password" name="password" placeholder="Password"/> 
     <button type="submit" class="submit-upld">Login</button> 
    </form> 
+0

'Login'モデルクラスを共有できます – Anton

+0

また、表示してください –

答えて

0

イムは、ここでNPEを得ました:

System.out.println("password :: "+loginForm.get().password); 

これは、フォームにエラーがあるためです。あなたのフォームが有効であるかどうかまずチェックしてください:

if (loginForm.hasErrors()) 

あなたのモデルを取得してください。無効なデータ型がフォームに渡されるシナリオを考えます。その場合、Play cantはモデルを構築します。

関連する問題