我在应用程序中的几乎所有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;
....
}
甚至可能吗?
由于
答案 0 :(得分:0)
不,抱歉,您无法为托管bean设置变量名称。 在这里,您可以获得ManagedBean批注文档的链接
https://docs.oracle.com/javaee/6/api/javax/faces/bean/ManagedBean.html
您可以看到“在应用任何请求之前,必须在应用程序启动时扫描类是否存在此批注。” 因此bean的名称可能只是一个硬编码的String。每次评估(例如计算ApplicationInfo.BEAN_NAME_APPLICATION_INFO的值)都会在应用程序启动时发生。