是否可以在bean注入中设置变量名称?

时间:2016-05-12 14:06:08

标签: jsf managed-bean

我在应用程序中的几乎所有jsf bean中都使用了一个jsf 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 个答案:

答案 0 :(得分:0)

不,抱歉,您无法为托管bean设置变量名称。 在这里,您可以获得ManagedBean批注文档的链接

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

您可以看到“在应用任何请求之前,必须在应用程序启动时扫描类是否存在此批注。” 因此bean的名称可能只是一个硬编码的String。每次评估(例如计算ApplicationInfo.BEAN_NAME_APPLICATION_INFO的值)都会在应用程序启动时发生。