2009-02-04 2 views
39

Я пытаюсь настроить сервер на службу paged-source. У меня все настроено так, что я получаю свой ассемблер и возвращаю значения, но я не получаю «вызывные вызовы».Плейлинг с использованием 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); 

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

+0

Я хотел бы начать, глядя в том, что Params переменной. Это должен быть экземпляр, содержащий информацию о начале и строках? Возможно, ваш Flex DataService игнорирует этот параметр. –

+1

@Travis, вы это задали некоторое время назад. Вы нашли какое-либо разрешение? BTW: Я бы очень рекомендовал [Charles Proxy] (http://www.charlesproxy.com/) для ваших нужд отладки сети.Это отличный инструмент для отладки, который поможет вам понять, что на самом деле отправляется туда и обратно между flex и сервером. –

ответ

1

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

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

Во-вторых, добавить пользовательские = "истинный" атрибут вашего пейджинговой собственности.

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

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

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

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

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

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

Смотрите эту тему за полезные ответы на аналогичной проблемой: http://www.mail-archive.com/[email protected]/msg111746.html

1

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

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