gpt4 book ai didi

inheritance - 托管 Bean 继承

转载 作者:行者123 更新时间:2023-12-05 01:17:04 24 4
gpt4 key购买 nike

我希望为一些托管 bean 创建一个父类(super class),其中包含一个注入(inject)的 @SessionScoped 托管 bean 和一个 @EJB。以下作品

super 类:

@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.
}

有什么方法可以避免将抽象父类(super class)注释为托管 bean?它在某种程度上感觉不对,但没有它,依赖注入(inject)将无法工作。

最佳答案

我想说,即使你最终得到一个类从其基类继承字段,注入(inject)是单独为这个类完成的,这意味着为了工作,基类也必须被注释 - 但这是只是一个猜测。

您是否使用 CDI 尝试过相同的构造?

关于inheritance - 托管 Bean 继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5911161/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com