有没有一种方法可以在使用JSF或PrimeFaces离开页面时调用方法



有没有一种方法可以在使用JSF离开页面时调用方法?

使用本机JSF或PrimeFaces时不使用。你最好的选择是挂接会话到期。

import jakarta.inject.Named;
import jakarta.enterprise.context.SessionScoped;
@Named
@SessionScoped
public class Bean implements Serializable {
    @PreDestroy
    public void destroy() {
        // Your code here.
    }
}

如果您碰巧使用JSF实用程序库OmniFaces,那么您可以使用它的@ViewScoped。这将在离开引用视图范围bean的页面时调用@PreDestroy

import jakarta.inject.Named;
import org.omnifaces.cdi.ViewScoped;
@Named
@ViewScoped
public class Bean implements Serializable {
    @PreDestroy
    public void destroy() {
        // Your code here.
    }
}

在隐蔽的情况下,它通过在窗口beforeunloadpagehide事件期间触发navigator.sendBeacon()来工作,并回退到同步XHR(在支持navigator.sendBeacon()的现代浏览器中不推荐使用)。

另请参阅:

  • 如何检测和删除(在会话期间)可以';不要被垃圾收集

如果在backingbean中使用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}"/>

相关内容

  • 没有找到相关文章

最新更新