preemovefromviewevent未被触发



你好,

我有一个需求,在用户导航离开当前页面之前执行一些功能(导航可以通过转发或重定向)。

所以我想在页面上的任何一个组件上使用这个称为PreRemoveFromViewEvent的系统事件。

PreRemoveFromViewEvent对我来说一直是一个理论概念,我从来没有实际使用过它。

所以我在h:inputText上应用了这个事件,并认为它会在用户导航离开页面时触发事件,而这个h:inputText将在加载新页面/视图之前从视图中删除。

但这不是射击。

我用对了吗?
我在正确的组件上使用它吗?
它会在离开之前触发事件吗?

下面是我的代码:
<h:inputText id="abc">
    <f:event listener="#{myManagedBean.preRemoveFromViewHandler}"     
             type="javax.faces.event.PreRemoveFromViewEvent"/> 
</h:inputText>
<p:commandButton action="page2.xhtml" value="NEXT"/>
侦听器:

public void preRemoveFromViewHandler(PreRemoveFromViewEvent prfve){
      //USER is navigating away so save the data
}

USING: JSF Mojarra 2.1.13 | Primefaces: 3.5

您应该使用PreDestroyViewMapEvent,在<h:body/><f:view/>中注册。这个事件是当用户从视图导航离开时触发的事件。来自规范:

在Map被销毁之前,必须使用UIViewRoot作为事件源发布PreDestroyViewMapEvent

PreRemoveFromViewEvent仅在父组件从视图图中移除时触发,当导航离开页面时不一定会发生这种情况。

相关内容

  • 没有找到相关文章

最新更新