39 votes

Paging Flex / LCDS de serveur à source de données

Je suis en train de configurer un serveur de données-source paginé de service. J'ai tout mis en place de sorte que je suis l'obtention de mon assembleur appelé et je suis de retour, mais je ne suis pas "paginé" appels.

Plus précisément:

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

est toujours appelée avec begin == -1 et rows == -1, au lieu de se les vraies valeurs de la page à travers. En outre:

public boolean useFillPage(List fillParameters)

n'est jamais appelé (ma mise en œuvre renvoie toujours vrai pour tous les paramètres). On dirait qu'il n'est jamais appelée ainsi parce que les JavaAdapter n'est pas la réception de la pageSize en-tête de la Flex client.

C'est ma destination de configuration:

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

Et mon Flex code pour appeler le service de données:

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

Ai-je raté quelque chose ici? Toute idée où commencer à chercher?

1voto

Dominic Tancredi Points 5352

Tout d'abord, qu'est-Ce que votre adaptateur définition? Essayez ceci:

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

Ensuite, ajoutez custom="true" attribut à votre pagination de la propriété.

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

Troisièmement, peut-être changer votre champ d' application

Quatrièmement, dans votre destination de définition, ajouter une carte="java-dao" au lieu d'avoir une référence.

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

Cinquième, assurez-vous que vous êtes Overridding les méthodes nécessaires (useFillPage, Collection de remplissage, etc.)

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

Voir ce fil de discussion pour quelques réponses utiles à un problème similaire: http://www.mail-archive.com/flexcoders@yahoogroups.com/msg111746.html

1voto

shane Points 33

Votre configuration de destination semble complète.

Vérifiez à nouveau que votre assembleur étend AbstractAssembler:

 public class InvoiceReviewListAssembler extends AbstractAssembler 
 

et que vous remplaciez au minimum les éléments suivants:

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X