2017-03-15 1 views
0

sap.ui.model.odata.ODataModel을 사용하여 백엔드에 서비스 호출을하고 UI에 데이터를 바인딩합니다. 코딩은 매우 기본입니다. 내가 이해할 수없는 것은 내부의 data.js이 서버에 보내는 호출이다. 나는SAPUI5 - oDataModel을 사용할 때 OData 호출이 data.js에 의해 내부적으로 실행되었습니다.

var oDModel = new ODataModel(this.sapServiceURL + "/sap/opu/odata/sap/ZKMDOCUMENTS_SRV", { 
 
    json: true, 
 
    useBatch: false, 
 
    defaultCountMode: sap.ui.model.odata.CountMode.None, 
 
    skipMetadataAnnotationParsing: true 
 
});
다음 작업을 수행 할 때 나는 두 개의 URL마다 실패 그 중 하나를 해고되는 것을 볼 수 있습니다. 아래를 참조하십시오 : enter image description here 첫 번째는 내가 이해하는 메타 데이터 호출입니다. 두 번째 나머지 호출 (항상 400 오류로 실패)에 대해서는 잘 모릅니다. 형성된 상기 제 2 URL을 제 란

{hostURI}/SAP/OPU/하나로, OData/SAP/ZKMDOCUMENTS_SRV /? $ 이동 = 0 & $ 상위 = 20

  • 인 을 요구?

  • 은 왜 URL은

  • 이 어떤 도움에 감사드립니다 어쨌든

잘못된 URL을 생성하기 때문에이 호출을 피할 수있는 방법이 있나요

형성되고있다. 감사합니다. .

답변

1

OData 모델로 인해 발생하지 않습니다. OData 모델은 (선언적으로 또는 프로 코달로) 작성한 바인딩 또는 절차 적 ODataModel.read 호출을 기반으로 요청을 작성합니다.

거기에있는 요청 형식을 기반으로, 내 생각 엔 귀하의보기 또는 조각의 어딘가에 모델의 "/"경로에 집계를 바인딩 한 것입니다. 예 :

<List items="{/}"> 
    <StandardListItem /> 
</List> 

또는, "/"로 집계 부모/조상 컨텍스트에 대한 상대적인 바인딩 (예를 들어, 항목을 = "{}")가있을 수 있습니다. 예 :

<Panel binding="{/}" > <!-- most likely the panel binding is done via code --> 
    <List items="{}"> 
     <StandardListItem /> 
    </List> 
<Panel> 

나는 요청이 때문에이 집계의 페이징 (= 0 = 상위 20를 건너) 부분을 요구한다는 사실 때문에 절차 ODataModel.read 호출 될 수 있다고 생각하지 않습니다. 사실,이 두 숫자를 기반으로 순전히 귀하의보기 또는 단편에서 어딘가에 grow = "true"라는 List가 있다고 말하면됩니다.이 목록은 요청을 유발합니다.

+0

감사합니다. Serban, 맞습니다. 테이블에서 "bindAggregation"을 사용하고 있지만 XML 뷰에서는 items = "{/}"항목에 바인딩 경로를 정의했습니다. 그 점을 지적 해 주셔서 감사합니다. 이 코드는 이제 완벽하게 작동합니다. – Deepak

관련 문제