SAPUI5中使用OdataModel绑定集合属性的问题求助
存在的问题及修正方案
1. 实体主键属性名不匹配
你在bindElement路径中使用的主键名是Bibliothek,但Mock数据中实体的对应主键属性名为BibliothekName,二者不一致会导致Mockserver无法匹配到对应实体。
2. Mock数据结构不符合OData规范
你当前的Mock数据是外层包裹数组、内层嵌套results的结构,该结构是OData实体集合查询的返回格式。单实体查询(即bindElement触发的按主键查询单个实体的请求)的Mock数据不需要外层数组,也不需要results包裹,直接返回实体对象即可:
{ "__metadata": { "id": "http://MyWebService/Reserve_Book(BibliothekName='BE1',ReservationNr='4162')", "uri": "http://MyWebService/Reserve_Book(BibliothekName='BE1',ReservationNr='4162')", "type": "infos.Reserve_BookType" }, "iScomfirmed": true, "BibliothekName": "BE1", "ReservationNr": "4162", "BookType": "3021", "BookCategory": "2" }
3. 绑定路径及语法错误
你已经通过bindElement将表单绑定到了对应单实体上,输入框的绑定路径不需要额外加results[0],同时你现有绑定语法存在多余的>符号,属于语法错误,修正后的Input代码如下:
<Input value="{Bibliothek>BibliothekName}" editable="false"></Input>
4. 实体访问路径合法性问题
你直接使用根路径/Reserve_Book(...)访问实体的前提是你的OData元数据中将Reserve_Book定义为了独立的实体集。如果它仅作为Book_Regal的导航属性存在,你需要将bindElement的路径改为导航路径:
formA.bindElement({ path: "/Book_Regal(Bibliothek='BE1',ReservationNr='4162')/Reserve_Book", model: "Bibliothek" });
内容的提问来源于stack exchange,提问作者Lionel Samstag.
相关产品推荐
相关产品推荐

