私はZentaskサンプルに基づいて、簡単なログインを作成しようとしている - zentask - playframework、しかし私はApplication.authenticateアクションを呼び出してログインボタンをクリックしたとき、それは実行時例外が発生します。エラーPlayframework:[のRuntimeException:にjava.lang.reflect.InvocationTargetException]
[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()
);
}
}
}
私はそれが私がユーザーへの呼び出しを削除するとするので、ログインクラスでの検証機能とは何かを持って理解して - 私は、行をマークしています。 validate関数で認証します。これはエラーなく動作します。しかし、私はそれを理解することができません。すべてのヘルプは高く評価されるだろう
@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();
}
}
-
@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);
}
.. . . . . . .
}
とAccountDetailsクラス - として
ユーザクラスです。
Thanx a lot。
インポートの宣言なし、例外スタックトレース、フラグメントコードなし。あなたはすでにそのような問題に取り組んでいることを除いて、そのような質問に答えるのはかなりハードコアです。 –