懒加载缝页的部分?

时间:2009-04-29 16:42:40

标签: ajax seam richfaces

我正在研究一个接缝应用程序(在JBoss AS 4.2.2下的2.1.1.GA),其中一个特定的(有时是大的)部分不需要渲染,直到用户与该特定的交互在文章标题中,用户点击标题,然后展开以显示包含文字的框。

我可以在没有Seam和Richfaces任何问题的情况下实现这一点,但是当用户首次加载页面时,所有部分的内容都会下载到浏览器中。无论如何,这些部分(可能包含或不包含richfaces控件本身)是否可以使用ajax按需下载?

感谢。

2 个答案:

答案 0 :(得分:2)

很多方法。

只需在框中设置render =“false”,然后在单击标题时reRender它的父容器。

例如。你的支持Bean中有一个名为showContent的布尔值,它由toggleContent()方法切换:

<a4j:commandLink 
   value="This is a title" 
   ajaxSingle="true" 
   reRender="contentDiv" 
   action="#{someBackingBean.toggleContent}"/>

<a4j:outputPanel id="contentDiv">
   <a4j:outputPanel rendered="#{someBackingBean.showContent}">
      This is some text that is not rendered when the page loads
   </a4j:outputPanel>
</a4j:outputPanel>

编辑:回应评论。另一种方法是使用a4j:jsFunction(非常方便)和一些javascript。

<h1 onclick="toggleContent(this);">This is a title</h1>
<a4j:outputPanel id="contentDiv">
   <a4j:outputPanel rendered="#{someBackingBean.showContent}">
      This is some text that is not rendered when the page loads
   </a4j:outputPanel>
</a4j:outputPanel>

<script>
function toggleContent(element) {
   //check if the contentDiv has any contents (maybe check if element has a child under contentDiv)

   //if it doesn't then call a4j:jsFunction to load the contentDiv eg. loadContent();

   //hide or show div depending on the current state of it
}
</script>

<a4j:jsFunction name="loadContent" action="#{someBackingBean.toggleContent}" reRender="contentDiv"/>

无论如何都是这样的。

答案 1 :(得分:0)

如果使用可滚动表怎么样?如何实现以块的形式提取数据?

Ragards 马尔科