Flex / LCDS Пейджинг между сервером и источником данных - PullRequest
39 голосов
/ 05 февраля 2009

Я пытаюсь настроить сервер на службу с постраничным источником данных. У меня все настроено так, что я вызываю мой ассемблер и возвращаю значения, но я не получаю «постраничных» вызовов.

В частности:

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

всегда вызывается с begin == -1 и rows == -1, вместо получения реальных значений для пролистывания. Дополнительно:

public boolean useFillPage(List fillParameters)

никогда не вызывается (моя реализация всегда возвращает true для всех параметров). Похоже, он никогда не вызывается, потому что JavaAdapter не получает заголовок pageSize от клиента Flex.

Это моя конфигурация назначения:

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

И мой код Flex для вызова службы данных:

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

Я что-то здесь упускаю? Есть идеи, с чего начать искать?

Ответы [ 2 ]

1 голос
/ 26 августа 2011

Ваша конфигурация назначения выглядит завершенной.

Проверьте, что ваш ассемблер расширяет AbstractAssembler:

public class InvoiceReviewListAssembler extends AbstractAssembler 

и что вы переопределяете как минимум следующее:

@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
}
1 голос
/ 13 августа 2011

Во-первых, каково ваше определение адаптера? Попробуйте это:

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

Во-вторых, добавьте атрибут custom = "true" к свойству paging .

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

В-третьих, возможно, измените вашу область действия на приложение

В-четвертых, в определении пункта назначения добавьте адаптер = "java-dao" вместо ссылки на него.

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

В-пятых, убедитесь, что вы переопределяете необходимые методы (используйте FillPage, заполнение коллекции и т. Д.)

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

См. Эту ветку для некоторых полезных ответов на подобную проблему: http://www.mail-archive.com/flexcoders@yahoogroups.com/msg111746.html

...