3

<div>是否可以在具有<forEach>循环的情况下实现实时滚动或延迟滚动。我在 a 中有以下代码<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>
4

1 回答 1

2

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

由于您在代码中使用 JSF(基于使用延迟评估表达式,如#{statusBean.statusList}and <h:form>)并假设您使用 JSF 2+,OmniFaces展示中有一个很好的示例:<o:componentIdParam>可扩展列表示例显示您可以进行 ajax 调用到@RequestScoped托管 bean 并检索 JSONString并使用它来更新客户端上的值,例如 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 */
}
于 2013-04-09T20:43:41.773 回答