[英]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批注,仅通过离开视图就不会破坏对象,因此请注意导入!
您的问题解决方案:-它与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.