Tôi đang tiếp tục việc học của mình cho Play 2.0 và tôi đang làm việc trên mẫu Đăng nhập. Về cơ bản các hình thức tương tự như dự án mẫu Zentasks cung cấp ...Từ ràng buộc vào đối tượng rỗng: RuntimeException: java.lang.reflect.InvocationTargetException
Vấn đề của tôi là thông báo lỗi khi không có người sử dụng có thể được tìm thấy trong cơ sở dữ liệu, lỗi xảy ra trên dòng sau:
Form<Login> loginForm = form(Login.class).bindFromRequest();
mẫu của tôi trông giống như:
@Entity
public class Person extends Model {
@Constraints.Required
public String password;
@Constraints.Required
public String email;
// -- Queries
public static Model.Finder<String, Person> find = new Model.Finder(String.class, Person.class);
/**
* Authenticate a User.
*/
public static Person authenticate(String email, String password) {
Logger.info("email: " + email + " and password is:" + password);
return find.where().eq("email", email).eq("password", password).findUnique();
}
/**
* Retrieve all users.
*/
public static List<Person> findAll() {
return find.all();
}
// --
}
Và điều khiển của tôi trông giống như:
/**
* Handle login form submission.
*/
public static Result authenticate() {
play.Logger.info("Entering authenticated method...");
Form<Login> loginForm = form(Login.class).bindFromRequest(); //ERROR OCCURS HERE
if (loginForm.hasErrors()) {
return badRequest(views.html.login.render(loginForm));
} else {
session("email", loginForm.get().email);
return redirect(routes.LandingPage.index());
}
}
Và lớp Đăng nhập của tôi bên trong Application.java:
public static class Login {
public String email;
public String password;
public String validate() {
Logger.info("Entering validation in class login... " + email + " " + password);
if (Person.authenticate(email, password) == null) {
return "Invalid user or password";
}
return null;
}
}
BTW, tôi sử dụng mySql làm cơ sở dữ liệu của mình. Và tôi có một người dùng hợp lệ mã đang làm việc tốt ...
CẬP NHẬT 17-04-2012
Nếu bạn từng gặp phải điều kỳ lạ trong Play2.0 chỉ gỡ lỗi nó một cách cẩn thận. Tôi đến từ PHP và tôi đã thử gỡ lỗi với sysouts! Nhưng điều đó không ổn. Chạy chơi gỡ lỗi chạy và nhấn F6 cho đến khi bạn biết nơi nó đi sai!
Trong trường hợp của tôi, tôi đã ghi nhật ký thứ gì đó chưa được lưu trong cơ sở dữ liệu, trên thực tế nó chưa tồn tại!
Nếu tôi loại bỏ từ khóa tĩnh tôi nhận được lỗi biên dịch: gõ Đăng nhập không phải là thành viên của bộ điều khiển đối tượng.Application. BTW: tĩnh cũng như đã đề cập trong dự án mẫu zentask ... – adis
Chỉ cần dùng thử, bạn có thể di chuyển lớp ra khỏi lớp Ứng dụng, vào tệp riêng của nó, dưới dạng lớp công khai và thử lại không? Hãy nhớ cập nhật nhập khẩu. –
Hi Pierre, với Login.class riêng biệt nó vẫn không hoạt động. Nó hoạt động khi tôi sử dụng một trong các lớp Model của tôi, một lớp Person cơ bản .. Tôi không hiểu hành vi này ... – adis