Flex/LCDS 服务器到数据源分页

2022-09-01 04:01:56

我正在尝试将服务器设置为数据源分页服务。我已经设置好了所有内容,以便调用我的汇编程序并返回值,但是我没有收到“分页”调用。

具体说来:

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

始终使用 和 调用,而不是获取要翻阅的实际值。另外:begin == -1rows == -1

public boolean useFillPage(List fillParameters)

从不调用(我的实现始终对所有参数返回 true)。它看起来从未被调用过,因为 JavaAdapter 没有从 Flex 客户端接收 pageSize 标头。

这是我的目标配置:

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

我在这里错过了什么吗?有什么想法可以开始寻找吗?


答案 1

首先,您的适配器定义是什么?试试这个:

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

其次,将 custom=“true” 特性添加到分页属性。

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

第三,可能将范围更改为应用程序

第四,在目标定义中,添加 adapter=“java-dao”,而不是引用它。

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

第五,确保你覆盖了必要的方法(使用FillPage,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


答案 2

您的目标配置看起来已完成。

仔细检查您的汇编程序是否扩展了抽象Assembler:

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
}

推荐