【问题标题】: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

标签: jsf user-interface jsf-2 primefaces popup


【解决方案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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-31
    相关资源
    最近更新 更多