0

applicationScoped Bean を注入しようとしています。JSF2 ApplicationScope Bean インスタンス化時間で同様のトピックを見つけましたか? 任意のサーブレット関連クラスで JSF マネージド Bean を名前で取得する

顔のコンテキストでjsfの方法を使用すると、すべて問題ありません(WebsitesControllerはAppScopedです):

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

2 つのオーバーフロー スレッドのインジェクションでは機能しません。私のコード:

@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

私のせい?

4

1 に答える 1

1

Glassfish の ApplicationScope にも問題があります。Maven または Ant の Web プロジェクトはありますか? (Mavenでは、ApplicationScopeが期待どおりに機能しないと思います-antでは機能します)

今あなたの質問に:

@Inject を使用する場合、WebsiteController には @Named と @ApplicationScope (jsf としての他のインポート !!) が必要であり、beans.xml が必要です。その後、CDI がアクティブになります。

@ EJB を使用する場合、 WebsiteController には @Stateless が必要です。

お役に立てれば幸いです...

于 2011-12-09T07:30:11.293 に答える