从其他计算机访问应用程序时,不会调用<p:remotecommand>

时间:2015-10-29 09:03:28

标签: javascript java primefaces jsf-2.2

这是我的情景,

我有“myPage.xhtml”页面,我添加了一个 java脚本来捕获浏览器/选项卡关闭事件。哪个实习生使用执行注销方法调用 的 remoteCommand

<!DOCTYPE html>
<html xmlns="http://www.w3c.org/1999/xhtml"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:p="http://primefaces.org/ui"
    xmlns:pm="http://primefaces.org/mobile"
    xmlns:fn="http://java.sun.com/jsp/jstl/functions">
<f:view >
    <h:head>
        <meta name="metaport"
            content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
            <h:outputStylesheet library="mylib" name="css/queries.css" />
            <script lang="JavaScript">
                window.onbeforeunload = confirmExit;
                function confirmExit() 
                {
                    warnUser();
                }
            </script>
        <f:view renderKitId="MOBILE_KIT" />
    </h:head>
    <h:body id="body">
        <pm:page id="myPage">
            <pm:header title="" styleClass="header">
                <h:graphicImage library="img" name="images/logo.png"
                    styleClass="logo" />
                <h:outputLink id="menu-bar" styleClass="menu_float">
                    <span id="menu_float" class="menu-icon"> <span></span>
                    </span>
                </h:outputLink>
            </pm:header>
            <pm:content styleClass="content">
                <h:form prependId="false">
                    <p:remoteCommand name="warnUser" actionListener="#{myModel.logout()}" />
                </h:form>

                </pm:content>
            </pm:page>
    </h:body>
</f:view>
</html>

我在 eclipse 中启动了网页,并使用url的localhost:8081 / myapp或来自同一台机器的http://176.124.xxx.xxx:8082/myapp进行访问,在浏览器/标签关闭事件和注销时调用方法调用完了。

但是,如果我尝试从其他计算机访问URL http://176.124.xxx.xxx:8082/myapp并尝试相同的方案,则不会触发注销方法。

有什么我错过了,我有点困惑。为什么它不起作用?

更新

我发现了这个问题。我已经修改了脚本,通过暂时关闭页面来确定事件是否实际被触发。

 <script lang="JavaScript">
        window.onbeforeunload = confirmExit;
        function confirmExit() 
        {
            warnUser();
            return "do you want to close";
        }
    </script>

在这种情况下,我发现几秒后就会调用logout方法。因为脚本中弹出的用户确认页面没有立即关闭,所以页面会关闭。

还有其他办法可以解决这个问题吗?

0 个答案:

没有答案