调用LazyDataModel
的load()
方法,并成功退出。dataTable
被渲染,但唯一的问题是,整个页面被阻止,按钮不给任何响应,除了一个是执行JavaScript。
我认为有Ajax的东西,而AjaxStatus显示的东西正在加载,但没有什么加载。
我使用的是PrimeFaces 3.4.2和Mojarra 2.1.6
这里是我的。xhtml,在选项。xhtml是另一个h:形式声明
<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的load方法:
@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);
}
任何想法或建议都将非常感谢。如果用PrimeFaces的表单更改h:表单,会不会有帮助?