我正在使用带有 Weblogic 10.3.6 作为服务器的 Hibernate 4、Spring 3 和 JSF 2.0。
我在一页中有两个数据表,为了填充数据表,我正在使用延迟加载。
我面临的问题是当两个数据表都显示时,分页不起作用。它确实转到第 2 页和第 3 页等等,但数据表中的记录对于两个数据表保持不变。如果我删除其中任何一个,则分页效果很好。
我注意到当我有多个数据表时,即使过滤器也不起作用。两个数据表都采用单一形式,它们都具有两个不同的 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 第一个数据表
@Named("emp")
@Scope("view")
@PostConstruct
public LazyDataModel<Employee> getLazyModel() {
if (lazyModel == null) {
lazyModel = new LazyRequestDataModel(empList, empService) {
};
}
return lazyModel;
}
Managedbean 第二个数据表
@Named("dept")
@Scope("view")
@PostConstruct
public LazyDataModel<Department> getLazyModel() {
if (lazyModel == null) {
lazyModel = new LazyRequestActivitiesDataModel(deptList,
deptService) {
};
}
return lazyModel;
}