繁体   English   中英

在离开带有JSF或PrimeFaces的页面时,是否可以调用方法?

[英]Is there a way to call a method upon leaving a page with JSF or PrimeFaces?

是否可以在离开JSF页面后调用方法?

使用本地JSF或PrimeFaces时不可以。 最好的选择是代替会话过期。

import javax.inject.Named;
import javax.enterprise.context.SessionScoped;

@Named
@SessionScoped
public class Bean implements Serializable {

    @PreDestroy
    public void destroy() {
        // Your code here.
    }
}

如果碰巧使用了JSF实用程序库OmniFaces ,则可以使用其@ViewScoped 当离开引用视图范围的bean的页面时,这将调用@PreDestroy

import javax.inject.Named;
import org.omnifaces.cdi.ViewScoped;

@Named
@ViewScoped
public class Bean implements Serializable {

    @PreDestroy
    public void destroy() {
        // Your code here.
    }
}

beforeunload ,它通过在窗口beforeunload事件期间触发navigator.sendBeacon()工作,并回beforeunload同步XHR(在支持navigator.sendBeacon()现代浏览器中已弃用)。

也可以看看:

如果在后备bean中使用omnifaces @ViewScoped批注,则离开视图时,该bean对象将被破坏; 因此,当发生这种情况时,您可以使用其中的@PreDestroy批注来调用该函数。

注意 :必须使用omnifaces @ViewScoped批注; 使用标准的JSF @ViewScoped批注,仅通过离开视图就不会破坏对象,因此请注意导入!

来源: http : //showcase.omnifaces.org/cdi/ViewScoped

您的问题解决方案:-它与Java脚本一起使用

    <head>
<title>onunload test</title>
<script type="text/javascript">
window.onunload = unloadPage;

function unloadPage()
{
 alert("unload event detected!");
}
</script>
</head>

另一些链接以获取更多详细信息:- 链接

当您关闭页面或导航到另一个页面时,可以使用<a4j:jsFunction/>并在页面正文的' onunload '事件中调用它来调用JSF托管bean方法,如下所示。

<body onunload="leavingPage()">

<a4j:jsFunction name="leavingPage" action="#{myBean.myMethod}"/>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM