【问题标题】:PrimeFaces LazyDataModel the entire page is blocked after rendering dataTablePrimeFaces LazyDataModel 渲染dataTable后整个页面被阻塞
【发布时间】:2013-06-19 08:34:13
【问题描述】:

LazyDataModelload() 方法被调用,并成功退出。 dataTable 被渲染,但唯一的问题是整个页面被阻止,按钮没有给出任何响应,除了一个执行 JavaScript 的按钮。

我认为 Ajax 有问题,而 AjaxStatus 显示正在加载某些内容,但没有要加载的内容。

我正在使用 PrimeFaces 3.4.2 和 Mojarra 2.1.6

这是我的 .xhtml,在 options.xhtml 中又声明了一个 h:form

<ui:include src="options.xhtml" />
      <h:form id="display">
         ...
         <p:dataTable id="resultsTable" value="#{index.lazyModel}"
            var="searchResult" rows="10" paginator="true" emptyMessage=""
            paginatorPosition="bottom" lazy="true"
            rendered="#{empty index.lazyModel ? false : true}">
            <p:column>
               <h:panelGrid columns="1">
                  <h:panelGrid columns="2">
                     <h:outputLink value="#{searchResult.url}">
                        <h:outputText value="#{searchResult.title}" />
                     </h:outputLink>
                     <h:outputText value="#{searchResult.category}" />
                  </h:panelGrid>
                  <h:outputText value="#{searchResult.kwic}" />
               </h:panelGrid>
            </p:column>
         </p:dataTable>
         <p:graphicImage value="/resources/welcome.gif"
            rendered="#{empty index.lazyModel}" styleClass="welcome" />
      </h:form>

LazyDataModel 的加载方法:

@Override
   public List<Result> load(int first, int pageSize, String sortField,
         SortOrder sortOrder, Map<String, String> filters) {

      // rowCount
      int dataSize = searchResults.size();
      this.setRowCount(dataSize);

      List<Result> temp = null;
      // paginate
      if (dataSize > pageSize) {
         try {
            temp = searchResults.subList(first, first + pageSize);
         } catch (IndexOutOfBoundsException e) {
            temp = searchResults.subList(first, first
                  + (dataSize % pageSize));
         }
      } else {
         temp = searchResults;
      }

      return searchHandler.classify(temp);
   }

任何想法或建议将不胜感激。

提前致谢。

【问题讨论】:

    标签: ajax primefaces lazy-loading


    【解决方案1】:

    如果您使用 PrimeFaces 中的表单更改 h:form 是否有帮助?只是一个想法......

    【讨论】:

    • 您指的是哪种形式?因为据我所知,没有 PrimeFaces 特定的形式。
    • 嗯,我曾经使用 RichFaces 和 Ajax,并且有一个 a4j:form,它在使用 RichFaces 和/或 Ajax 的组件时总是对我们有所帮助......所以我想我没有'不能用 PrimeFaces 的形式正确表达 .. 抱歉 :) ... 但无论如何,这只是一个远射
    猜你喜欢
    • 2019-05-27
    • 2015-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-11
    • 2013-08-12
    • 2021-03-10
    • 1970-01-01
    相关资源
    最近更新 更多