的load()
方法LazyDataModel
被调用,并成功退出。已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);
}
任何想法或建议将不胜感激。
提前致谢。