懒洋洋地加载 <c:forEach> 的内容



是否有可能在具有<forEach>循环的<div>中实现实时滚动或延迟滚动?我在一个<div>中有以下代码,我想惰性加载内容。

<div class="update" id="update">
                    <c:forEach var="p" items="#{statusBean.statusList}"
                        varStatus="loop">
                        <h:form>
                            <c:if test="${p.statusmsg!=null}">
                                <div class="status">
                                                                //content
                                </div>
                            </c:if>
                        </h:form>
                    </c:forEach>
</div>

JSTL和EL都只能在页面的视图构建期间使用(这是由服务器完成的)。Ajax请求不是视图构建时的一部分,因为它们位于客户端浏览器中,所以JSTL和EL对于处理Ajax请求是无用的。不过,您仍然可以使用ajax和纯servlet,如下所述:如何使用servlet和ajax ?

由于您在代码中使用JSF(基于使用延迟计算表达式,如#{statusBean.statusList}<h:form>)并假设您使用JSF 2+,在OmniFaces展示中有一个很好的例子:<o:componentIdParam>可扩展列表示例显示您可以对@RequestScoped管理bean进行ajax调用并检索JSON String并使用它来更新客户端的值,如HTML dom。

基于此答案的动态滚动示例:

$(window).scroll(function(){
    if  ($(window).scrollTop() == $(document).height() - $(window).height()){
       loadNewData();
    }
});
function loadNewData(){
    /* add code to fetch new content and add it to the DOM */
}

相关内容

  • 没有找到相关文章

最新更新