gpt4 book ai didi

java - 使用 f :ajax to wait for data to finish processing, 然后更新

转载 作者:行者123 更新时间:2023-11-29 09:03:08 25 4
gpt4 key购买 nike

我在网格化 JSF、AJAX 和 JavaScript 方面遇到了困难。这是我正在尝试做的事情:

当用户提交表单时,他们将被定向到一个新页面。该页面最初检查他们的提交是否已被处理,如果没有,则显示一个进度条(参见 Twitter Bootstrap )。然后,我使用 f:ajax 来检查它是否已完成处理。 waitForProcessing 方法被调用;它只是等到 processing 设置为 true,然后返回 true。此时,f:ajax 应调用 JavaScript 将进度条设置为不可见,然后更新页面。这是代码:

<ui:define name="content">

<c:choose>
<c:when test="#{not submission.isIsProcessed}">
<f:ajax onevent="setVisibility('processing-dialog', 'none'); setVisibility('processing-backdrop', 'none');" listener="#{submission.waitForProcessing}" status="success" />

<div class="modal-backdrop fade in" id="processing-backdrop"></div>
<div id="processing-dialog" class="modal hide fade in" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="false" style="display: block;">
<div class="modal-header">
<h3 id="myModalLabel">One sec...</h3>
</div>
<div class="modal-body">
<p>We are compiling and running your code!</p>
<div class="progress progress-striped active">
<div class="bar" style="width: 40%;"></div>
</div>
</div>
</div>
</c:when>
</c:choose>
.......
.......

这里有很多东西不起作用。首先,f:ajax 抛出异常,因为显然 f:ajax 只能嵌套在某些组件中。有一个更好的方法吗?目标是显示进度条,直到后端处理完成。此处理可能需要几分钟时间,这就是为什么我遇到麻烦并且在数据准备好之前不让页面自行加载的原因。

最佳答案

您的问题是 f:ajax 只执行一次。如果你想多次执行同一个 ajax 调用,你应该使用一个 poll 组件,它只在 PrimeFaces、RichFaces 和其他框架中可用。 RichFaces 有一个完全按照您描述的方式工作的组件(它在内部使用轮询)。您可以在这里查看:RichFaces Progress Bar .

关于java - 使用 f :ajax to wait for data to finish processing, 然后更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16289437/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com