在JSF页面完成呈现后加载数据

时间:2011-04-29 05:57:19

标签: ajax jsf-2 richfaces lazy-loading

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

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

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

PS:我想过使用oncomplete的{​​{1}}和onbeforedomupdate客户端事件,并调用用rich:tab声明的ajax函数。但似乎这些事件在实际切换页面之前被触发了。

1 个答案:

答案 0 :(得分:1)

在html中使用onload标记的<body>事件以及<a4j:jsFunction>

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