EJB で何も得られなかったために、この問題が発生したと思います。@Stateless というエンティティのサービス クラスがあります。セッションスコープのプレゼンテーションモデルで @EJB を注入して使用すると、すべて問題ありません。しかし、プレゼンテーション モデルで使用するために上書きした DataModel で、この EJB サービスを使用したいと思いました。
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;
}
}
実行時に、「users=service.findAllUsers();」の位置で NullPointerException を取得します。プレゼンテーション モデルでこの DataModel を上書きすると、同じことが機能します。
@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 ;
}
};
}
}
通常の Java クラスに EJB を注入することはできませんか? プレゼンテーション モデルで DataModel を定義する必要がないようにするにはどうすればよいですか?
ありがとう