java - Paginación de servidor a fuente de datos Flex/LCDS
dataservice (2)
Estoy intentando configurar un servidor para el servicio paginado de origen de datos. Tengo todo configurado para que llame a mi ensamblador y devuelva valores, pero no recibiré llamadas "paginas".
Específicamente:
public Collection fill(List fillArgs, int begin, int rows)
siempre se invoca con begin == -1
y rows == -1
, en lugar de obtener los valores reales para pasar la página. En adición:
public boolean useFillPage(List fillParameters)
nunca se llama (mi implementación siempre devuelve verdadero para todos los parámetros). Parece que nunca se llama porque JavaAdapter no está recibiendo el encabezado pageSize del cliente Flex.
Esta es mi configuración de destino:
<destination id="invoiceListDataService">
<adapter ref="java-dao" />
<properties>
<scope>session</scope>
<source>com.williams.finance.invoice.dao.InvoiceReviewListAssembler</source>
<network>
<paging enabled="true" pageSize="100" />
</network>
<metadata>
<identity property="invoiceNumber"/>
</metadata>
</properties>
</destination>
Y mi código Flex para llamar al servicio de datos:
myDataService = new DataService("invoiceListDataService");
myDataService.autoSyncEnabled=false;
myDataService.fill(invoiceReviewListModel.invoiceList, params);
¿Me estoy perdiendo algo aquí? alguna idea de donde comenzar a buscar?
Primero, ¿cuál es la definición de tu adaptador? Prueba esto:
<adapters>
<adapter-definition class="flex.data.adapters.JavaAdapter"
id="java-dao"></adapter-definition>
</adapters>
En segundo lugar, agregue el atributo custom = "true" a su propiedad de paginación .
<paging enabled="true" pageSize="100" custom="true"/>
En tercer lugar, posiblemente cambie su alcance a la aplicación
En cuarto lugar, en su definición de destino, agregue adapter = "java-dao" en lugar de tener una referencia a él.
<destination adapter="java-dao" id="invoiceListDataService">
En quinto lugar, asegúrese de estar redefiniendo los métodos necesarios (use FillPage, relleno de colección, etc.)
@Override
public boolean useFillPage(List fillParameters)
{
// enabling paged-fill for all fills
return true;
}
Consulte este hilo de algunas respuestas útiles a un problema similar: http://www.mail-archive.com/[email protected]/msg111746.html
Tu configuración de destino parece completa.
Verifique que su ensamblador extienda AbstractAssembler:
public class InvoiceReviewListAssembler extends AbstractAssembler
y que anula lo siguiente como mínimo:
@Override
public int count(List arg0) {
return -1; // or return the collection length.
}
@Override
public boolean useFillPage(List fillParameters) {
return true;
}
@Override
public Collection fill(List fillParameters,
PropertySpecifier ps,
int startIndex,
int numItems) {
// TODO
}