是否有可能在具有<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 */
}