Flex/LCDS Пейджинг между сервером и источником данных

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

В частности:

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 ответа

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

Дважды проверьте, что ваш ассемблер расширяет 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
}

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

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

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

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

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

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

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

В-пятых, убедитесь, что вы переопределяете необходимые методы (useFillPage, Collection fill и т. Д.)

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

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

Другие вопросы по тегам