Jsf 2 使用f:event将ConversationScope bean注入ViewScope bean
我不能将ConversationScoped bean注入到ViewScoped bean中,因为ConversationScoped bean的寿命可能比ViewScoped bean短,反之亦然,这取决于ConversationScoped bean的寿命是否长 为了克服这个限制,我尝试使用f:事件作为preRenderView侦听器执行注入:Jsf 2 使用f:event将ConversationScope bean注入ViewScope bean,jsf-2,cdi,seam3,Jsf 2,Cdi,Seam3,我不能将ConversationScoped bean注入到ViewScoped bean中,因为ConversationScoped bean的寿命可能比ViewScoped bean短,反之亦然,这取决于ConversationScoped bean的寿命是否长 为了克服这个限制,我尝试使用f:事件作为preRenderView侦听器执行注入: <f:metadata> <f:event type="preRenderView" listener="#{taskCon
<f:metadata>
<f:event type="preRenderView" listener="#{taskController.initializeTask(workPackageConversation.workPackage)}" />
</f:metadata>
但是,这不起作用,侦听器初始化任务和getter getWorkPackage都没有被调用
我意识到我可以使用FacesContext从一个托管bean中查找另一个托管bean,但我很好奇为什么这不起作用。这是因为当我从另一个视图导航到一个视图时没有调用f:event侦听器吗?例如,没有重定向或直接页面视图
我还尝试了Seam 3 Faces中的s:viewAction标记,但没有成功。它也不会被调用
提前感谢。我认为生命周期问题不会起作用,因为您始终有一个普通作用域bean的代理。您可以在会话处于活动状态时取消对会话范围bean的引用,也可以在会话未处于活动状态时取消引用会话范围bean,但您总能获得正确的会话