3

@SessionScoped 관리 빈과 @EJB가 포함 된 몇 가지 관리 빈에 대해 수퍼 클래스를 만들고 싶습니다. 다음 작품Managed Bean 상속

슈퍼 클래스 :

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

관리 빈으로 추상 슈퍼 클래스에 주석을 피하기 위해 어떤 방법이 있나요? 그것은 어떻게 든 느껴지지만, 그것 없이는 의존성 주입이 작동하지 않습니다.

답변

0

기본 클래스의 필드를 상속하는 클래스가 있다고해도,이 클래스에 대한 주입은 별도로 수행됩니다. 즉, 작동하려면 기본 클래스에 주석을 추가해야합니다. -하지만 이것은 단지 추측 일뿐입니다.

CDI를 사용하여 동일한 구조를 사용해 보셨습니까?