JSF 页面完成渲染后加载数据

发布于 2024-11-04 11:35:12 字数 602 浏览 1 评论 0原文

我正在使用 Richfaces 4 和 Mojarra 2.0.4。因此,如果答案特定于 Richfaces 4 框架,我会很高兴:)

我知道 JSF 组件是在服务器端处理的。我的一些页面确实以数据为中心。因此,当我加载该页面时(例如:在带有 switchType ajax 的 richTab 内),我的 bean 需要花费大量时间来执行标有 @PostConstruct 的方法来执行和获取数据。因此,用户点击选项卡标题和实际页面渲染之间的时间间隔相当长,用户体验非常糟糕。我已经在页面中实现了数据表的延迟加载,但这仍然没有优化我的页面加载时间,因为 @PostConstruct 仍然存在。

无论如何,我可以先加载页面,然后使用ajax获取数据并更新页面吗?这个加载时间对用户来说真的很烦人。任何帮助都值得赞赏:)

PS:我想到使用 rich:tab< 的 oncompleteonbeforedomupdate 客户端事件/code> 并调用使用 a4j:function 声明的 ajax 函数。但这些事件似乎是在页面实际切换之前触发的。

I'm using Richfaces 4 and Mojarra 2.0.4. So I'll be glad if the answer is specific to Richfaces 4 framework :)

I understand that the JSF components are processed at the server side. Some of my pages are really data centric. So when I load that page (eg: inside a richTab with switchType ajax), it takes a lot of time for my bean to execute the method marked with @PostConstruct to execute and fetch data. And hence the time period between user clicking on the tab's header and actual page rendering is quite large, a really bad user experience. I've implemented lazy loading for the dataTables in the page but that still doesn't optimize my page load time since @PostConstruct is still there.

Is there anyway I can load the page first and THEN fetch the data with ajax and update the page? This loading time is really annoying for the user.Any help appreciated :)

PS: I thought of using the oncomplete and onbeforedomupdate client side events of rich:tab and call ajax functions declared with a4j:function. But it seems that these events are fired before the page is actually switched.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

水水月牙 2024-11-11 11:35:12

请在 html 中使用 标记的 onload 事件以及

如果您仍然感觉页面未完全渲染, 在调用该方法之前,先使用 onload 中的 setTimeout('a4jfunctionName',10) javascript 函数完成渲染。

use onload event of <body> tag in html along with <a4j:jsFunction>

If you still feel your page is not rendering completely before the method called then use setTimeout('a4jfunctionName',10) javascript function in onload to complete the rendering first.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文