【问题标题】:Managed Bean inheritance托管 Bean 继承
【发布时间】:2011-05-06 12:06:14
【问题描述】:

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

超类:

@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?感觉有点不对劲,但是没有它,依赖注入就行不通了。

【问题讨论】:

    标签: inheritance dependency-injection java-ee-6 managed-bean


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-09
      • 2017-11-07
      • 2013-09-10
      相关资源
      最近更新 更多