2009-02-04 3 views
39

데이터 소스 페이징 서비스에 서버를 설정하려고합니다. 모든 것을 가져 와서 어셈블러가 호출되고 값을 반환하지만 모든 호출이 호출되지 않습니다. 특히플렉스/LCDS 서버 - 데이터 소스 페이징

은 :

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> 

그리고 데이터 서비스 호출에 대한 내 플렉스 코드 :

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

내가 여기에 뭔가를 놓치고 있습니까? 어떤 아이디어를 찾고 시작할 것입니까?

+0

내가 그 년을보고 시작하는 것이 변수 PARAMS. 그것은 "시작"과 "행"정보를 포함하는 인스턴스 여야합니까? 어쩌면 귀하의 플렉스 DataService 해당 매개 변수를 무시합니다. –

+1

@Travis, 얼마 전에 질문하셨습니다. 어떤 해결책을 찾았습니까? BTW : 네트워크 디버깅 요구 사항에 대해 [Charles Proxy] (http://www.charlesproxy.com/)를 적극 권장합니다.그것은 플렉스와 서버 사이에서 실제로주고받는 것이 무엇인지 알아내는 데 도움이되는 훌륭한 디버깅 도구입니다. –

답변

1

먼저 어댑터 정의가 무엇입니까? 이 시도 :

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

둘째, 당신의 페이징 속성에 사용자 정의 = "true"를 속성을 추가 할 수 있습니다.

넷째, 대상의 정의에,에 대한 참조를하는 대신 어댑터 = "자바 DAO"를 추가 응용 프로그램

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

셋째, 아마도 당신의 범위를 변경합니다. http://www.mail-archive.com/[email protected]/msg111746.html

:

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

다섯째, 당신은 유사한 문제에 대한 몇 가지 유용한 응답이 스레드를 참조하십시오 필요한 방법 (useFillPage, 컬렉션 채우기 등)

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

을 Overridding하고 있는지 확인

1

대상 구성이 완전 해 보입니다. 당신 어셈블러 AbstractAssembler를 확장

번 확인 :

public class InvoiceReviewListAssembler extends AbstractAssembler 

하고 최소한 다음을 오버라이드 (override)하는 것을 :

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