2011-04-29 61 views
0

我正在使用Richfaces 4和Mojarra 2.0.4。所以我会很高兴,如果答案是特定于Richfaces 4框架:)JSF页面完成渲染后加载数据

我知道JSF组件在服务器端处理。我的一些页面实际上是以数据为中心的。因此,当我加载该页面(例如:在switchTax ajax的richTab中)时,我的bean需要很长时间才能执行标记为@PostConstruct的方法来执行和获取数据。因此用户点击标签页头和实际页面渲染之间的时间间隔非常大,这是一种非常糟糕的用户体验。我已经为页面中的dataTables实现了延迟加载,但仍然不会优化我的页面加载时间,因为@PostConstruct仍然存在。

是否有反正我可以先加载页面,然后用ajax获取数据并更新页面?这种加载时间是赞赏user.Any帮助:)

PS真的很烦:我想用用a4j:function宣布rich:taboncompleteonbeforedomupdate客户端事件和呼叫AJAX功能。但似乎这些事件在之前被触发页面实际切换。

回答

1

使用与<a4j:jsFunction>

沿着如果你还是觉得你的网页是不是叫然后使用setTimeout('a4jfunctionName',10)的方法onload javascript函数先完成渲染之前完全渲染HTML <body>标签的onload事件。

+0

感谢您的回答!然而,如果我们要使用onload事件,我将不得不根据哪个标签被加载来检查哪个bean调用哪个方法。右?但你的回答只是给了我一个主意!我可以在rich:tab上使用oncomplete和setTimeout!将尝试并回来。 :) – Nikhil 2011-04-29 07:41:41

+0

@Nikhil - 是的,这是真的,否则你将不得不同时加载所有的数据,祝你好运:) – niksvp 2011-04-29 07:47:25

+0

嗯,刚刚发现第一个选项卡的oncomplete方法没有得到执行!如果我切换到其他选项卡并返回到第一个,则只有第一个选项卡的未完成执行。所以我不能在第一个标签中使用这个策略。 :| – Nikhil 2011-04-29 10:18:50