2016-05-12 20 views
0

Ich habe eine JSF-Bean in fast allen JSF-Beans in der Anwendung verwendet und ich bevorzuge es nicht, den Bean-Namen beim Injizieren der Bean-Instanz fest zu codieren. Ist es möglich, es zu einer Variablen zu machen und die Variable überall zu verwenden?Kann der Variablenname in der Bean-Injektion festgelegt werden?

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

Nun ist die aufgerufene Klasse

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

Ist es überhaupt möglich?

Dank

+1

Ist Ihnen bewusst, dass der 'ApplicationInfo.BEAN_NAME_APPLICATION_INFO' Teil Ihres verwalteten Eigenschaftswerts eine vollständig fest codierte Zeichenfolge anstelle einer Variablen ist, die in einer Zeichenfolge inline ist? – BalusC

Antwort

0

Nein, leider nicht, man kann nicht einen Variablennamen für eine Managed Bean gesetzt. Hier haben Sie den Link zu der Dokumentation der ManagedBean Anmerkung

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

Sie können sehen, dass „Klassen für das Vorhandensein dieser Anmerkung beim Start der Anwendung gescannt werden müssen, bevor irgendwelche Anforderungen bedient worden sind.“ Also der Name der Bean ist vielleicht nur eine fest codierte Zeichenfolge. Jede Auswertung (z. B. die Berechnung von ApplicationInfo.BEAN_NAME_APPLICATION_INFO) würde später beim Start der Anwendung erfolgen.