Inheritance 托管Bean继承
我希望为一些托管bean创建一个超类,其中包含一个注入的@SessionScoped托管bean和一个@EJB。以下作品 超级班:Inheritance 托管Bean继承,inheritance,dependency-injection,java-ee-6,managed-bean,Inheritance,Dependency Injection,Java Ee 6,Managed Bean,我希望为一些托管bean创建一个超类,其中包含一个注入的@SessionScoped托管bean和一个@EJB。以下作品 超级班: @ManagedBean @ViewScoped public abstract class UserPageController implements Serializable { private static final long serialVersionUID = -6118448960678133445L; @ManagedPropert
@ManagedBean
@ViewScoped
public abstract class UserPageController implements Serializable {
private static final long serialVersionUID = -6118448960678133445L;
@ManagedProperty(value = "#{sessionController}")
protected SessionController sessionController;
private User user;
private String userId;
@EJB protected UserBean userBean;
public UserPageController() {
}
public SessionController getSessionController() {
return sessionController;
}
public void setSessionController(SessionController sessionController) {
this.sessionController = sessionController;
}
//-------------------------------- User ------------------------------------
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
public User getUser() {
if (user == null) {
if (getUserId() != null && sessionController.getLoggedInUser().getRole().isManager()) {
User dbUser = userBean.findUser(Long.parseLong(userId));
if (dbUser != null) {
setUser(dbUser);
}
} else {
setUser(userBean.findUser(sessionController.getLoggedInUser().getId()));
}
}
return user;
}
public void setUser(User user) {
this.user = user;
}
}
用法:
@ManagedBean
@ViewScoped
public class UserCompetenceController extends UserPageController implements Serializable {
// Stuff that uses sessionController & userBean.
}
有没有办法避免将抽象超类注释为托管bean?它感觉有点不对劲,但没有它,依赖注入就无法工作。我想说,即使最终有一个类继承了它的基类的字段,注入是为这个类单独完成的,这意味着为了工作,基类也必须被注释——但这只是一个猜测 您是否使用CDI尝试过相同的构造