のload()
メソッドLazyDataModel
が呼び出され、成功して終了します。はdataTable
レンダリングされますが、唯一の問題は、ページ全体がブロックされていることです。JavaScript を実行するボタンを除いて、ボタンは応答しません。
AjaxStatus は何かがロードされていることを示していますが、ロードするものは何もありませんが、Ajax には何かがあると思います。
Mojarra 2.1.6でPrimeFaces 3.4.2を使用しています
ここに私の.xhtmlがあります.options.xhtmlにはもう1つの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 の 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);
}
アイデアや提案は大歓迎です。
前もって感謝します。