1
調用LazyDataModel
的load()
方法,並退出成功。 呈現dataTable
,但唯一的問題是整個頁面被阻止,按鈕不會給出任何響應,除了執行JavaScript的按鈕之外。PrimeFaces LazyDataModel渲染數據後整個頁面被阻塞
我認爲有Ajax的東西,而AjaxStatus顯示有東西正在加載,但沒有加載。
我使用PrimeFaces 3.4.2鑽嘴魚科2.1.6
這裏是我的.xhtml,在options.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的加載方法:
@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的特定形式。 – ReDy
好吧,我曾經使用RichFaces和Ajax工作,並且有一個a4j:表單,它總是在處理來自RichFaces和/或Ajax的組件時幫助我們...所以我想我沒有正確表達表單來自PrimeFaces ..抱歉:)但無論如何,這只是一個長期的 – Uvedenrodee
謝謝,無論如何,爲您的嘗試 – ReDy