无法在 Primefaces RequestContext.execute() 调用中显示对话框

2024-04-10

我有一个选项卡视图,只要用户选择该选项卡,我就想在其中刷新该选项卡的内容。我还希望在刷新选项卡时弹出模式对话框。

这是带有 tabChange ajax 事件处理程序的 tabView

<p:dialog widgetVar="statusDialog" modal="true" draggable="false" minimizable="false" appendToBody="true"   closable="false" header="Processing..." resizable="false" maximizable="false">  
     <p:graphicImage library="assets" name="ajax-loader.gif"></p:graphicImage> 
</p:dialog>

<p:tabView id="tabview" orientation="top" dynamic="false">
    <p:ajax event="tabChange" listener="#{bean.tabChangeListener}"></p:ajax>
    <p:tab title="tab1">
        <ui:include src="/WEB-INF/views/tab1.xhtml"/>
    </p:tab>
    <p:tab title="tab2">
        <p:remoteCommand actionListener="#{bean.refreshData}" update="someTab2ElementID" name="refresh" global="true" onstart="statusDialog.show()" oncomplete="statusDialog.hide()"/>
        <ui:include src="/WEB-INF/views/tab2.xhtml"/>
    </p:tab>
</p:tabView>

这是 tabChangeListener:

public void tabChangeListener(TabChangeEvent event) {
    if ( event.getTab().getId().equalsIgnoreCase("tab2") ) {
                RequestContext.getCurrentInstance().execute("refresh()");
    }
}

刷新远程命令按预期被调用,但我的状态对话框从未显示。如果通过单击按钮触发相同的远程命令,则会出现状态对话框。 JavaScript 控制台中没有错误。

当 RequestContext.execute() 触发remoteCommand时,为什么不显示statusDialog?如何让它显示?我什至尝试将 statusDialog.show() 添加到execute(),但没有帮助。


我想到了。这是解决方案:

<h:outputScript>
var blockCount=0;
function showStatus() {
 if (blockCount==0) statusDialog.show();
 blockCount++;
};
function hideStatus() {
 blockCount--;
 if (blockCount==0) statusDialog.hide();
};
</h:outputScript>

<p:ajaxStatus onstart="showStatus();" onsuccess="hideStatus();" onerror="blockCount=0;statusDialog.hide();errorDialog.show();"/>  

<p:remoteCommand actionListener="#{bean.refreshData}" update="someTab2ElementID" name="refresh" global="true" onstart="showStatus()" oncomplete="hideStatus()"/>

显然,我的状态对话框没有显示的原因是另一个 Ajax 调用完成并调用了 statusDialog.hide(),而我的刷新() 事情正在进行中。上面的 JS 代码维护一个计数器,记录正在进行的 Ajax 调用数量,并且仅在所有调用完成后才会隐藏状态对话框。现在按预期工作了!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法在 Primefaces RequestContext.execute() 调用中显示对话框 的相关文章

随机推荐

  • 禁用与原型观察方法的链接

    我想创建一个像这样的链接 a href http example com text a 并替换行为 以便链接在单击时使用 Ajax 下载内容 对我来说重要的是不要替换 href 属性 因此复制链接仍然有效 一种解决方案是 link oncl
  • 实体框架6错误无法加载指定的元数据资源

    我在解决方案中使用实体框架 6 和 模型优先 我将 数据模型 类分离到另一个项目中 以便我可以添加对 数据模型 类的引用 而无需公开我的 数据模型上下文 和连接 我不想将我的实体数据模型项目 尤其是数据库上下文等 暴露给我的 UI 层 我有
  • 图像绘制速度

    我正在开发一款游戏 但目前我正在运行基准测试 如果有人能在这件事上帮助我 我将不胜感激 我正在做的是 当我单击开始按钮时 使用以下代码在面板上触发绘制事件 private void startToolStripMenuItem Click
  • 共享 ViewModel 以帮助片段和父 Activity 之间的通信

    虽然 JetPack 的导航组件看起来很有前途 但我却找不到实现我想要的东西的方法 让我们看一下示例应用程序屏幕 该应用程序有一个主要活动 一个顶部工具栏 一个带有 fab 的底部工具栏 我面临着两个挑战 我想以正确的方式解决它们 1 我需
  • 从密度对象(或更广泛地从一组数字)生成随机数

    假设我有一组数字 我怀疑它们来自同一分布 set seed 20130613 x lt rcauchy 10 我想要一个从相同的未知分布中随机生成一个数字的函数 我想到的一种方法是创建一个density对象 然后从中获取 CDF 并取随机均
  • (go-sql-driver/mysql) packet.go 中出现意外的 EOF 和繁忙缓冲区

    我正在得到unexpected EOF and busy buffer错误于go sql driver mysql尽管设置后SetConnMaxLifetime SetMaxIdleConns and SetMaxOpenConns按照建议
  • 使用猫鼬保存图像

    我知道已经有很多关于这个主题的帖子 但不幸的是直到现在我才找到答案 我将 angular js 与示例代码一起使用http angular js in image upload http angular js in image upload
  • 从流而不是文件加载配置文件

    我使用 OpenMappedExeConfiguration 和 ExeConfigurationFileMap 来加载配置文件 它们的重载表明它们只适用于文件名 有没有办法从流加载配置文件 背景 我想加载存储为嵌入式资源的配置文件 没有文
  • self.method = environ['REQUEST_METHOD'].upper() KeyError: 'REQUEST_METHOD' 使用 uwsgi 在 EC2 上设置 django 服务器时

    我得到了 当我击中http ec2 X YZ ABC EFG compute 1 amazonaws com admin 我很确定我的 Django 应用程序没有任何问题 因为该应用程序是空的 即 我刚刚使用创建了该应用程序django a
  • TSQL:提交时触发

    我们有一个后台系统 可以通过以下方式将发票信息插入到 SQL 数据库中 MSDTC http en wikipedia org wiki Distributed Transaction Coordinator存储过程中 应用程序插入标头 然
  • 浏览器推送通知出现错误“AbortError:注册失败 - 推送服务不可用”

    我创建了一个系统 使用 Firefox 和 Chrome 的浏览器推送通知来与网站访问者进行更多交互 我正在查看我的 Google Analytics 事件 了解订阅失败的原因 最大的原因是 推送服务不可用 我查遍了一切 试图找到这意味着什
  • 使用 PowerShell 替换文本文件的内容

    我浏览了这个网站 似乎找不到任何适合我情况的内容 基本上 我正在尝试向 NETLOGON 文件编写一个附加内容 以替换所有用户桌面上的文本文件中的文本 当前文本全面静态 我想要更改的文本对于每个用户来说都是唯一的 我想将当前文本 user1
  • xmlstarlet:过滤掉带有属性的元素

    如何过滤掉某些类型的不具有神奇值属性的元素并保留文档的其余部分 所有这一切都使用xmlstarlet 到目前为止我所要做的是 cat lt lt EOF gt database xml
  • ECS 服务 - 使用新的 Docker 映像自动部署

    我想通过使用最新的 Docker 映像启动我的 ECS 服务来自动部署应用程序 据我了解 部署新镜像版本的方法如下 创建新的任务修订版 更新 Docker 存储库上的映像后 更新服务并指定新版本 这似乎可行 但我想通过 CLI 来完成这一切
  • SHA256CryptoServiceProvider 和相关的可以在 WinXP 上使用吗?

    是否可以在 Windows XP 上使用 SHA256CryptoServiceProvider 和相关 SHA2 提供程序 我知道提供商使用 Vista 及更高版本中包含的加密服务 是否可以在 Microsoft XP 中安装这些服务 E
  • 在 Objective-C 中存储和检索数字对的快速方法

    我正在实现排队洪水填充算法 需要存储和检索数字对NSMutableArray 基本上 我正在创建一个数组 m queue NSMutableArray array 然后有时我填充数组 m queue addObject NSValue va
  • 下载时出错

    下载控制台会返回以下错误 帧加载因策略更改而中断 Example a href app exe Start Download a Console Preview 我应该在中配置一些东西吗Compiler or QWeb设置 我发现了 在传统
  • 无法使用 Windows 10 移动技术预览版将通用应用程序部署到手机

    我已解锁开发者卢米亚 635昨天刚刚更新为Windows 10 移动版技术预览版 http windows microsoft com en us windows preview download phone 操作系统版本 10 0 125
  • Perl 构造函数应该返回 undef 或“无效”对象吗?

    Question 什么被认为是 最佳实践 and why 处理构造函数中的错误 最佳实践 可以引用 Schwartz 的话 或者 50 的 CPAN 模块使用它 等等 但我对任何人提出的合理意见感到满意 即使它解释了为什么常见的最佳实践并不
  • 无法在 Primefaces RequestContext.execute() 调用中显示对话框

    我有一个选项卡视图 只要用户选择该选项卡 我就想在其中刷新该选项卡的内容 我还希望在刷新选项卡时弹出模式对话框 这是带有 tabChange ajax 事件处理程序的 tabView