Playframework: [RuntimeException: java.lang.reflect.InvocationTargetException]

Ich versuche, ein einfaches Login basierend auf dem Zentask-Beispiel zu erstellen.zentask - playframeworkWenn ich jedoch auf die Anmeldeschaltfläche klicke, die die Application.authenticate-Aktionen aufruft, tritt eine Laufzeitausnahme auf. Ich habe die Zeile mit - error markiert

[RuntimeException: java.lang.reflect.InvocationTargetException]

Application.java

public class Application extends Controller {

.........

public static class Login 
{
    public String email;
    public String password;

    public String validate() 
    {
        if (User.authenticate(email, password) == null) {
          return "Invalid user or password";
        }
        return null;
    }
}

   public static Result authenticate() 
    {
        Form<Login> loginForm = form(Login.class).bindFromRequest();  //--- error
        if(loginForm.hasErrors()) {
            return badRequest(login.render(loginForm));
        } else {
            session("email", loginForm.get().email);
            return redirect(
                routes.Application.index()
            );
        }
    }
}

Ich verstehe, dass dies etwas mit der Validierungsfunktion in Login Class zu tun hat, da der Aufruf von User.authenticate in der Validierungsfunktion fehlerfrei funktioniert. Aber ich kann es nicht herausfinden.

Die Benutzerklasse lautet wie folgt:

@Entity
public class User extends Model
{
    @Id
    @Constraints.Required
    @Formats.NonEmpty
    public String userId;

    @OneToOne(cascade=CascadeType.PERSIST)
    AccountDetails accDetails;


    public static Model.Finder<String,User> find = new Model.Finder<String,User>(String.class, User.class);



    // Authenticate the user details
    public static User authenticate(String email, String password) 
    {
        String tempId = AccountDetails.authenticate(email, password).userId;

        return find.ref(tempId);
    }

    .. . . . . . .

}

und die AccountDetails-Klasse -

@Entity
public class AccountDetails extends Model
{
    @Id
    String userId;

    @Constraints.Required
    String emailId;

    @Constraints.Required
    String password;

    public static Model.Finder<String,AccountDetails> find = 
            new Model.Finder<String,AccountDetails>(String.class, AccountDetails.class);


    public static AccountDetails authenticate(String email, String password) 
    {       
        return find.where()
            .eq("email", email)
            .eq("password", password)
            .findUnique();
    }

}

Antworten auf die Frage(1)

Ihre Antwort auf die Frage