您不能将
javax.faces.bean.SessionScoped用于JSF和
importjavax.inject.NamedCDI的这两个包中的注释混合在一起。两者都反映了不同的注入机制,因此不能在同一bean上混合使用。您必须从同一程序包中选择两个注解(用于注入和Bean范围限定)。使用以下对应套件中的套件
对于基于CDI的bean定义
javax.enterprise.context.SessionScoped //for bean scopingjavax.inject.Named //for bean declarationjavax.inject.Inject //for injection
对于基于JSF的bean定义
javax.faces.bean.SessionScoped //for bean scopingjavax.faces.bean.ManagedBean //for bean declarationjavax.faces.bean.ManagedProperty //for bean injection
编辑:现在,我更好地了解了您的需求,使用以下构造注入JSF托管bean
@ManagedProperty(value="#{yourBeanName}") SessionBean yourSessionBean;还要注意,在JSF中,您只能注入范围比其目标范围更广的bean,例如,可以将
@SessionScopedbean注入
@RequestScopedbean中,而不能以其他方式注入
但是由于不建议使用JSF托管bean,因此最好使用CDI托管bean。在这种情况下,您 可以 将范围较小的Bean注入范围较大的Bean



