@ManagedProperty
由于@ManagedBean
只能在类中使用,因此无法在servlet中使用。此外,也不可能注入范围小于父对象本身的对象,因为这只会导致并发问题。注入程序将为此抛出运行时异常。servlet本质上是应用程序范围内的,并在所有用户之间共享,并且您的UserIdentity
bean似乎是会话范围的。
由于JSF在Servlet API之上运行并将会话范围的bean存储在会话中,因此您可以在servlet中将其作为会话属性来获取:
UserIdentity identity = (UserIdentity) request.getSession().getAttribute("userIdentity");
请注意,FacesContext
除了之外FacesServlet
,通常在servlet中也无法使用,因此FacesContext
按注释中的建议在servlet中使用没有任何意义,只会返回null
。