このチュートリアルhttp://uaihebert.com/?p=1120に従ってlazyDataModelの実装があります
私のコードはこのチュートリアルとは少し異なります。ここにあります:
意見:
<p:dataTable id="tablaClientes" value="#{AgendaManualMBean.allClientes}"
var="tablaClientes"
widgetVar="clienteTable"
rowKey="#{tablaClientes.clDocid}"
selection="#{AgendaManualMBean.ciatt001}" selectionMode="single" rows="10"
lazy="true" paginatorPosition="top"
paginatorTemplate="{RowsPerPageDropdown}{FirstPageLink}{PreviousPageLink}
{CurrentPageReport} {NextPageLink} {LastPageLink}" rowsPerPageTemplate="5,10,15"
emptyMessage="No existen clientes">
<f:facet name="header" >
<p:outputPanel>
<h:outputText value="Busqueda " />
<p:inputText id="globalFilter" onkeyup="clienteTable.filter()"
style="width:150px" size="10"/>
</p:outputPanel>
</f:facet>
<p:column id="numOrdenColumn" filterBy="#{tablaClientes.clDocid}"
width="50"
headerText="Identificación"
filterMatchMode="contains">
<h:outputText value="#{tablaClientes.clDocid}" />
</p:column>
<p:column id="nomCliColumn"
filterBy="#{tablaClientes.clNombre1}"
width="250"
headerText="Cliente"
filterMatchMode="contains">
<h:outputText value="#{tablaClientes.clNombre1}" />
</p:column>
</p:dataTable>
MYマネージドBean:
public LazyDataModel<Ciatt001> getAllClientes() {
if (listaClientesLazy == null) {
listaClientesLazy = new LazyClienteModel(ambiente.getCodCia(),ambiente.getCodAge());
//listaClientesLazy = new LazyClienteModelMBean();
}
return listaClientesLazy;
}
私のLazyDataModel
public List<Ciatt001> load(int startingAt, int maxPerPage, String sortField, SortOrder sortOrder, Map<String, String> filters) {
String a = "";
try {
listaClientes = new ArrayList<Ciatt001>();
a = String.valueOf(agendamientoSession.countClientes2(cia, age));
listaClientes = agendamientoSession.listaClientes2(cia, age, startingAt, maxPerPage);
} catch (Exception e) {
e.printStackTrace();
}
if (getRowCount() <= 0) {
setRowCount(Integer.parseInt(a));
}
setPageSize(maxPerPage);
return listaClientes;
}
@Override
public Object getRowKey(Ciatt001 ciatt001) {
return ciatt001.getClDocid();
}
@Override
public Ciatt001 getRowData(String docid) {
//Integer id = Integer.valueOf(idBandeja);
for (Ciatt001 ciatt001 : listaClientes) {
if (docid.equals(ciatt001.getClDocid())) {
return ciatt001;
}
}
return null;
}
そして、ejbメソッド:
public List<Ciatt001> listaClientes2(String cia, String age ,int startingAt, int maxPerPage) {
Query query = em.createNamedQuery("Ciatt001.listaClientesPorCiaPorAge2");
query.setParameter(1, cia);
query.setParameter(2, age);
query.setFirstResult(startingAt);
query.setMaxResults(maxPerPage);
return query.getResultList();
}
public String countClientes2(String cia, String age) {
Query query = em.createNamedQuery("Ciatt001.countClientes2");
query.setParameter(1, cia);
query.setParameter(2, age);
return query.getSingleResult().toString();
}
この遅延読み込みの実装を使用してグローバルフィルターを実現するにはどうすればよいですか?