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();
}
}