刷新页面后如何显示模态弹出窗口?

Posted

技术标签:

【中文标题】刷新页面后如何显示模态弹出窗口?【英文标题】:How to display model popup after refreshing page? 【发布时间】:2012-12-31 21:49:46 【问题描述】:

模型弹出窗口正在关闭,同时刷新(按 F5 后)页面 请告诉我刷新后如何显示它。 我正在使用素面

<p:confirmDialog  closable="false" id="sessionExpiredDlg" message="Your session expired."  
                 header="#msgs['confirmDialog.initiatingDestroyProcess.label']" 
                 severity="alert" widgetVar="sessionExpiredConfirmation" style="z-index: 25000">
    <p:commandButton id="confirmRouteDel" value="Ok"
                                   oncomplete="sessionExpiredConfirmation.hide()" 
                                   actionListener="#login.logoutAction"/>

</p:confirmDialog>

【问题讨论】:

使用 jsf 操作或 F5 刷新? Refresh 创建一个新的 HTTP 请求。所以会话不再过期。为什么还要显示这个对话框? &lt;p:confirmDialog/&gt; 有一个visible 属性,我相信您可以在javascript 中跟踪页面刷新,您需要做的就是发挥创意。 我希望用户按下确认按钮,这是通过会话过期弹出窗口的唯一方法。 BalusC 【参考方案1】:

当会话过期时,您必须在响应中添加一些信息,例如 cookie“sessionExpired=true”,并将其与响应一起发送给您的客户端。 然后,每次在 HttpServletRequest 对象中找到该 cookie 时,您都必须渲染您的 confirmDialog。 我了解到您希望用户按下确认按钮,这是通过您的弹出窗口的唯一方法,是吗? 因此,当用户按下按钮时,只需从请求中替换 cookie(例如,通过将其过期日期更改为某个过去的值),并且下一个用户请求 cookie 不会出现,您的应用也不会显示该弹出窗口。 通过从请求中替换 Cookie 我的意思是这样的:

Map<String, Object> requestCookieMap =
    FacesContext.getCurrentInstance().getExternalContext().getRequestCookieMap();
Cookie sessionExpiredCookie = (Cookie) requestCookieMap.get("sessionExpired");
sessionExpiredCookie.setMaxAge(0);

【讨论】:

以上是关于刷新页面后如何显示模态弹出窗口?的主要内容,如果未能解决你的问题,请参考以下文章

firefox下如何关闭子窗口刷新父窗口? - 技术问答

关闭jQUERY中的弹出窗口后如何刷新父页面? [复制]

子窗口关闭,父窗口如何刷新

如何从richfaces弹出窗口刷新父jsf页面

点击按钮没有弹出modal弹窗,去刷新页面的解决方法

jQuery Mobile 弹出页面导航后不显示,仅在硬刷新或返回同一页面后显示