【问题标题】:How to programmatically close any open primefaces dialog box and sendRedirect如何以编程方式关闭任何打开的 primefaces 对话框和 sendRedirect
【发布时间】:2023-03-27 00:57:01
【问题描述】:

我们正在解决这个问题,我们正在打开一个对话框 (p:dialog),而无需在 jsf 页面中单击该对话框的 YES/NO 按钮,我们使用 tampered data 插件工具用一些新值篡改了 session id火狐。在这种情况下,我的会话应该过期,并且页面应该在会话过期时重定向。但实际上会话没有过期,对话框保持打开状态。请帮助我们获得解决方案。我们还发现,每当我们不打开对话框时,我们只是导航到页面中的不同选项卡并篡改了会话 ID,然后会话就会过期,这是预期的。当我们在页面中打开对话框时,这不起作用。每当我们篡改会话 ID 时,我们都希望使会话过期。

【问题讨论】:

  • 也就是说,打开对话框时你没有点击服务器?
  • 不,我们没有打到服务器..也很奇怪......当我们当时篡改会话 ID 时,服务器也没有被击中..这就是我们无法跟踪问题的原因.

标签: jquery jsf session jsf-2 primefaces


【解决方案1】:

打开对话框时点击服务器。

即不喜欢

<p:commandButton ... onclick="dialogWidgetVar.show();return false;" />

但宁愿喜欢

<p:commandButton ... oncomplete="dialogWidgetVar.show();" />

如有必要,添加update=":dialogId" 以确保对话框的内容与模型保持同步。

【讨论】:

  • 我们尝试了链接中提到的所有解决方案,但仍然无法使会话过期..
  • 让我们退后一步。或许有什么误会。您究竟使用什么测量/挂钩来验证服务器是否被击中? HTTP 流量监控?调试断点?记录器?我当然是说客户端已经向服务器发送了一个成功的(回发)请求。您可以在浏览器的 HTTP 流量监视器中轻松跟踪它(按 F12、网络等)。控制台中显然应该没有 JS 错误(但这已经在之前评论的链接中提到/暗示了,您显然已经排除了它)。
猜你喜欢
  • 1970-01-01
  • 2019-01-31
  • 2021-02-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-23
相关资源
最近更新 更多