我尝试注入一个applicationScoped Bean。 我在JSF2 ApplicationScope bean instantiation time?和Get JSF managed bean by name in any Servlet related class找到了类似的主题 {{3}}
使用faces上下文中的jsf方式一切都很好(WebsitesController是AppScoped):
FacesContext context = FacesContext.getCurrentInstance();
WebsiteController websitesController = context.getApplication().evaluateExpressionGet(context, "#{websitesController}", WebsitesController.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
我的错?
答案 0 :(得分:1)
我在Glassfish上的ApplicationScope也有问题。你有maven或ant webproject吗? (对于maven,我认为ApplicationScope没有按预期工作 - 用它来做)
现在回答你的问题:
当你使用@Inject时,你的WebsiteController需要@Named和@ApplicationScope(其他导入为jsf !!)并且你必须有一个beans.xml - 然后激活CDI。
当你使用@ EJB时,那么你的WebsiteController需要@Stateless。
我希望我能帮助你......