39 Stimmen

Flex/LCDS Server-zu-Datenquelle-Paging

Ich versuche, einen Server einzurichten, um Daten-Quelle paged Service. Ich habe alles eingerichtet, so dass ich meine Assembler aufgerufen und bin Werte zurück, aber ich bin nicht immer "ausgelagerte" Anrufe.

Konkret:

public Collection fill(List fillArgs, int begin, int rows)

wird immer aufgerufen mit begin == -1 y rows == -1 anstatt echte Werte zum Durchblättern zu erhalten. Darüber hinaus:

public boolean useFillPage(List fillParameters)

wird nie aufgerufen (meine Implementierung gibt für alle Parameter immer true zurück). Es sieht so aus, als ob es nie aufgerufen wird, weil der JavaAdapter den pageSize-Header nicht vom Flex-Client erhält.

Dies ist meine Zielkonfiguration:

<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>

Und mein Flex-Code für den Aufruf des Datendienstes:

myDataService = new DataService("invoiceListDataService");
myDataService.autoSyncEnabled=false;
myDataService.fill(invoiceReviewListModel.invoiceList, params);

Übersehe ich hier etwas? Haben Sie eine Idee, wo ich anfangen könnte zu suchen?

0 Stimmen

Ich würde damit beginnen, in der params-Variable zu suchen. Es sollte eine Instanz mit "begin" und "rows" Informationen sein? Vielleicht ignoriert Ihr Flex DataService diesen Parameter.

1 Stimmen

@Travis, Sie haben diese Frage schon vor einiger Zeit gestellt. Haben Sie eine Lösung gefunden? Übrigens: Ich empfehle dringend Charles Proxy für Ihre Netzwerk-Debugging-Bedürfnisse. Es ist ein großartiges Debugging-Tool, mit dem Sie herausfinden können, was tatsächlich zwischen Flex und Server hin und her gesendet wird.

1voto

Dominic Tancredi Punkte 39016

Erstens: Wie lautet Ihre Adapterdefinition? Versuchen Sie dies:

<adapters>
    <adapter-definition class="flex.data.adapters.JavaAdapter" 
        id="java-dao"></adapter-definition>
</adapters>

Zweitens: Hinzufügen custom="true" Attribut zu Ihrem ausrufen Eigentum.

<paging enabled="true" pageSize="100" custom="true"/> 

Drittens: Ändern Sie möglicherweise Ihre Umfang à Anmeldung

Viertens, fügen Sie in Ihrer Zieldefinition adapter="java-dao" hinzu, anstatt einen Verweis darauf zu haben.

<destination adapter="java-dao"  id="invoiceListDataService">

Fünftens: Vergewissern Sie sich, dass Sie die notwendigen Methoden überschreiben (useFillPage, Collection fill, etc.)

@Override
public boolean useFillPage(List fillParameters)
{
    // enabling paged-fill for all fills
    return true;
}

In diesem Thread finden Sie einige hilfreiche Antworten auf ein ähnliches Problem: http://www.mail-archive.com/flexcoders@yahoogroups.com/msg111746.html

1voto

shane Punkte 38

Ihre Zielkonfiguration sieht vollständig aus.

Vergewissern Sie sich, dass Ihr Assembler AbstractAssembler erweitert:

public class InvoiceReviewListAssembler extends AbstractAssembler 

und dass Sie mindestens die folgenden Punkte außer Kraft setzen:

@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
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X