2016-09-30 15 views
0

私は自分のUIに入力する名前またはアドレスの部分文字列を含む特定のエントリについてOData-Serviceを検索したいと考えています。 sap.ui.model.odata.v2.ODataModelオブジェクトには、それを行うためのメソッドread()がありますが、ドキュメントがまったく取得されていません。 OData-Serviceのコレクション "PatientSet"で特定の部分文字列を検索したいとします。さらに、同じ検索クエリで同じサービス内の特定のアドレスを検索したい。 "AddressSet"は、ナビゲーションプロパティ "Addresses"を介して "PatientSet"にリンクされているコレクションです。アドレスの検索はまだクエリに含まれていませんsap.ui.model.odata.v2.ODataModelで検索

this.oModel.read(
       "/PatientSet?$expand=Addresses(/Name/Family='" + familyName + "',/Name/First='" + firstName + "')",     
       { 
        success: function(data, result) {console.log(result)}, 
        error: function(err) {alert(err)} 
       } 
      ); 

:今、私の検索クエリは、このように構成されています。ドキュメンテーションは、read() - Methodは "モデルコンストラクタで指定されたodataサービスへのGETリクエストをトリガーします。データはモデルに保存されます。要求されたデータが返されます。

Request 
URL:http://XXXXXXXX/proxy/http/XXXXXXXXX/sap/opu/odata/XXXXXXXXX/$batch 
Request Method:POST 
Status Code:202 Accepted 
Remote Address:[::1]:54273 


Response 
--9D0C08B072143EFCC9C3A1A7A24358190 
Content-Type: application/http 
Content-Length: 1796287 
content-transfer-encoding: binary 

HTTP/1.1 200 OK 
Content-Type: application/atom+xml;type=feed 
Content-Length: 1796172 
dataserviceversion: 2.0 

はどのような次は「PatientSet」コレクションの最初の千個のエントリを含むXML応答である: はまだ私がその要求を取得することを応答が全く違う何かを言います。 なぜ、 "read()"メソッドはPOSTリクエストを含むバッチリクエストをトリガーしますか?そして、なぜフィルタリングは全くありませんか?

答えて

0

私はあなたがv2.ODataModelをもっとよく知っておくべきだと思います。なぜあなたは、ODataModelを使って、あなたが舞台裏であなたを詰め込むのではなく、read()を手動で呼び出す理由がありますか?

とにかく、通常はフィルタを使用します。 this code of Navigation & Routing tutorialをご覧ください。何らかの "フルテキスト検索"が必要な場合は、OData 2.0でカスタムパラメータを送信する必要があります(SAP GWを使用する場合は「検索」)。 OData 4.0では標準の "$ search"も利用可能ですが、公式にはUI5とSAP GWはまだOData 4.0をサポートしていません。他の質問には、バッチ処理がv2.ODataModelでデフォルトで有効になっています。

+0

これは私が達成しようとしているものです: http://stackoverflow.com/questions/39791655/odata-v2-filtering-in-expanded-collection – doktormatte