java - 加载 <c :forEach> lazily 的内容

标签 java jsf jstl lazy-loading

是否可以在 <div> 中实现实时滚动或延迟滚动?其中有 <forEach>环形。我在 <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 都只能在页面的 View 构建期间使用(这由服务器完成)。 Ajax 请求不是 View 构建时间的一部分,因为它们在客户端浏览器中,因此 JSTL 和 EL 无法处理 ajax 请求。尽管如此,您仍可以按照此处所述将 ajax 与普通 servlet 结合使用:How to use Servlets and Ajax?

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

基于 this answer 的实时滚动示例:

$(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 */
}

关于java - 加载 <c :forEach> lazily 的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15910848/

相关文章:

java - JSON解析子项而不使用任何库

java - 修剪输入框并添加到上下文 JSTL

spring - JSP 自定义标记中的 i18n 翻译

java - 如何在 JSF 上设置 EL 除法的精度

linux - 由于字体的原因,Windows 和 Linux 上的网页布局有所不同

java - 如何将 JSF UIInput 组件重置为其托管 bean 值

java - 如何写 <c :if> - jSTL tag - comparing map key with struts formbean element

java - 如何在java中从另一个应用程序运行jar文件

java - 无法加入@JoinColumn(即@Id)

java - 从内部列表 java 8 的对象列表中获取 ID 列表