サーバーとしてWeblogic10.3.6でHibernate4、Spring 3、およびJSF2.0を使用しています。
遅延読み込みを使用しているデータテーブルにデータを入力するために、1ページに2つのデータテーブルがあります。
私が直面している問題は、両方のデータテーブルが表示された後、ページネーションが機能しないことです。2ページ目と3ページ目などに進みますが、datatableのレコードは両方のdatatableで同じままです。それらのいずれかを削除すると、ページネーションは完全に機能します。
複数のデータテーブルがある場合、フィルターでさえ機能しないことに気づきました。両方のデータテーブルは単一の形式であり、両方に2つの異なるManagedBeanがあり、両方ともビュースコープです。リクエストスコープで試しましたが、問題は解決しませんでした。
この問題を解決するにはどうすればよいですか?
JSFコード
<h:form id="form">
<!-- Master form -->
<p:dataTable id="dataTable" var="req" lazy="true" value="#{emp.lazyModel}"
paginator="true" rows="10"
selection="#{emp.selectedRequest}"
selectionMode="single">
<p:ajax event="rowSelect" listener="#{emp.onRowSelect}" />
<p:column id="empNo" filterBy="#{req.empNo}"
headerText="Request No" footerText="contains"
filterMatchMode="endsWith">
<h:outputText value="#{req.empNo}" />
</p:column>
other columns
</p:dataTable>
<!-- Detail form -->
<p:dataTable id="dataTableDet" var="reqAct" lazy="true" value="#{dept.lazyModel}"
paginator="true" rows="1"
rowsPerPageTemplate="5,10">
<f:facet name="header">
Emp Details
</f:facet>
<p:column>
<f:facet name="header">
<h:outputText value="SLNo" />
</f:facet>
<h:outputText value="#{reqAct.slNo}" />
</p:column>
<p:column id="empNo" filterBy="#{reqAct.empNo}"
headerText="Request No" footerText="contains"
filterMatchMode="endsWith">
<h:outputText value="#{reqAct.empNo}" />
</p:column>
other columns
</p:dataTable>
</h:form>
Managedbean First Datatable
@Named("emp")
@Scope("view")
@PostConstruct
public LazyDataModel<Employee> getLazyModel() {
if (lazyModel == null) {
lazyModel = new LazyRequestDataModel(empList, empService) {
};
}
return lazyModel;
}
Managedbeanの2番目のデータテーブル
@Named("dept")
@Scope("view")
@PostConstruct
public LazyDataModel<Department> getLazyModel() {
if (lazyModel == null) {
lazyModel = new LazyRequestActivitiesDataModel(deptList,
deptService) {
};
}
return lazyModel;
}