2016-05-12 5 views
0

私はjsf Beanをアプリケーションのすべてのjsf beanに使用しています。Beanインスタンスをインジェクトするときに、Bean名をハードコードしたくないのです。それを変数にして、どこでも変数を使用することは可能ですか?Beanインジェクションで変数名を設定することはできますか?

@ManagedBean (name=ApplicationInfo.BEAN_NAME_APPLICATION_INFO, eager=true) 
@ApplicationScoped 
@SuppressWarnings("serial") 
public class ApplicationInfo extends ParentBean 
{ 
    public static final String  BEAN_NAME_APPLICATION_INFO="applicationInfo"; 
    ..... 
} 

参照クラス

@ManagedBean 
@ViewScoped 
public class SearchResultsBean extends ParentBean 
{ 
    private static final long serialVersionUID = 1L; 
    @ManagedProperty (value="#{ApplicationInfo.BEAN_NAME_APPLICATION_INFO}") 
    private ApplicationInfo applicationInfo; 
    .... 
} 

はそれも可能ですか?

おかげ

+1

管理プロパティ値の 'ApplicationInfo.BEAN_NAME_APPLICATION_INFO'部分が、文字列にインライン化された変数ではなく、完全にハードコードされた文字列であることを認識していますか? – BalusC

答えて

0

ありませんが、申し訳ありませんが、あなたは、管理対象Beanの変数名を設定することはできません。 ここでは、あなたがいることがわかりますManagedBean注釈

https://docs.oracle.com/javaee/6/api/javax/faces/bean/ManagedBean.html

のドキュメントへのリンクを持っている「いずれかの要求がサービスされている前のクラスは、アプリケーションの起動時にこの注釈の存在のためにスキャンする必要があります。」 したがって、Beanの名前はハードコーディングされたStringだけかもしれません。 ApplicationInfo.BEAN_NAME_APPLICATION_INFOの値の計算など、すべての評価は、アプリケーションの起動後に行われます。