Tôi nghĩ rằng vấn đề này tăng lên vì tôi đã không nhận được một cái gì đó với EJBs. Tôi có một lớp dịch vụ cho thực thể của tôi, đó là @Stateless. Khi tôi sử dụng nó bằng cách tiêm với @EJB trong phiên bản trình bày scoped phiên của tôi, tất cả đều ổn. Nhưng bây giờ tôi muốn sử dụng dịch vụ này EJB trong một DataModel Tôi đã ghi đè để sử dụng trong mô hình trình bày của tôi:NullPointerException khi tiêm EJB trong Java Class
public class LazyUserDataModel extends LazyDataModel<User> {
@EJB
private UserService service;
@Override
public List<User> load(int first, int pageSize, String sortField, SortOrder sortOrder, Map filters) {
List<User> users;
users= service.findAllUsers();
this.setRowCount(users.size());
return users;
}
}
On thi tôi nhận được một NullPointerException ở vị trí "người dùng = service.findAllUsers();" Các tác phẩm tương tự, khi tôi ghi đè DataModel này trong mô hình bản trình bày của mình:
@Named
@SessionScoped
public class UserPM {
@EJB
private UserService service;
private LazyDataModel<User> lazyUsers;
public UserPM() {
// Don't works
//lazyUsers = new LazyUserDataModel();
lazyUsers = new LazyDataModel() {
@Override
public List<User> load(int first, int pageSize, String sortField, SortOrder sortOrder, Map filters) {
List<User> users;
users = service.findAllUsers();
this.setRowCount(users .size());
return users ;
}
};
}
}
Không thể Tiêm EJB trong một lớp Java bình thường? Tôi phải làm gì mà tôi không phải định nghĩa DataModel trong mô hình trình bày?
Cảm ơn
Cố gắng đưa BeanInterface của bạn vào chú thích EJB. Tôi có cùng một vấn đề một vài lần trước đây và đã sửa nó. '@EJB (beanInterface = YourInterface.class)' – ZeusNet