2011-10-11 3 views
0

applicationScoped Bean을 주입하려고합니다. 그것이 작동하지 않는 두 개의 오버 플로우 스레드의 주사와Java Inject Applicationscope Bean

FacesContext context = FacesContext.getCurrentInstance(); 
WebsiteController websitesController = context.getApplication().evaluateExpressionGet(context, "#{websitesController}", WebsitesController.class); 

: 나는 모든 (WebsitesController이 AppScoped입니다) 괜찮 얼굴 맥락에서 JSF 방식으로 JSF2 ApplicationScope bean instantiation time?Get JSF managed bean by name in any Servlet related class

에서 유사한 주제를 발견 . 내 코드 :

@ManagedBean(eager=true) 
@ApplicationScoped 
public class WebsitesController implements Serializable { 
...} 

지금은 내가 다음 문 노력

@ManagedBean(name = "shopController") 
@ViewScoped 
public class ShopController { 
    {Injection-Statement} 
    private WebsitesController websitesController; 

을 시도 :

@ManagedProperty("#{websitesController}") 
@Inject 
@EJB 

무슨 내 잘못?

답변

1

Glassfish의 ApplicationScope에도 문제가 있습니다. Maven 또는 개미 웹 프로젝트가 있습니까? 당신이 @Inject를 사용할 때

는 다음 WebsiteController이 @Named와 @ApplicationScope (다른 수입이 필요합니다 : 귀하의 질문에 이제

- (가 않습니다 개미와 받는다는으로 나는 예상대로 ApplicationScope의 나던 작업 생각) as jsf !!) beans.xml이 있어야합니다. 그러면 CDI가 활성화됩니다.

@ EJB를 사용하면 WebsiteController에 @Stateless가 필요합니다.

내가 당신을 도울 수 있기를 바랍니다 ...