Подтвердить что ты не робот

Пейджинг с использованием Flex/LCDS-сервера-источника данных

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

В частности:

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

Я что-то пропустил здесь? Любые идеи, с которых начать искать?

4b9b3361

Ответ 1

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

<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/[email protected]/msg111746.html

Ответ 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
}