2016-05-12 100 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的名字可能只是一个硬编码的字符串。每次评估(例如计算ApplicationInfo.BEAN_NAME_APPLICATION_INFO的值)都会稍后在应用程序启动时发生。

相关问题