我目前正在开发一个基于 jsf 的 webapp。我正在使用 jsf 2.0、servlet 3 和 primefaces。
这个想法是:
用户登录后,他会看到一个信息面板。此面板显示加载标志。在后端执行一个相当长的数据库查询,生成他的交易总和。任务完成后,应更新面板以显示结果。
首先,我尝试在页面加载后进行 ajax 调用(隐藏按钮由 javascript 和 f:event 触发),但页面只加载了一半,任务从未完成(我只做了一个计数为 10 的虚拟循环)。
我还尝试使用隐藏的进度条解决问题,但遇到了同样的问题:已完成的侦听器不会在页面加载后立即执行。
我拥有或打算使用的内容:面板本身由 sessionScoped Bean“控制”。这个 bean 还应该处理长任务。最初,面板应显示正常文本(加载符号不必更新,简单的 gif 就足够了)。在长时间的任务之后,结果应该显示在面板中。
你会如何解决这个问题,或者你认为我解决这个问题是完全错误的?
先感谢您。