我有一个在SAP HANA上运行的后端,它使用xsodata
服务与前端进行通信(使用SAP UI5编码)。 xsodata
服务按以下格式输出数据:
{
"d": {
"results": [
{
"__metadata": {
"type": "music.Music_infoType",
"uri": "***/odata/music.xsodata/Music_info('10020')"
},
"ID": "10020",
"TITLE": "Music 1"
},
{
"__metadata": {
"type": "music.Music_infoType",
"uri": "***/odata/music.xsodata/Music_info('10026')"
},
"ID": "10026",
"TITLE": "Music 2"
}
}
在我的manifest.json
文件中,我将此信息加载到模型中:
"sap.app": {
...
"dataSources": {
"topmusics": {
"uri": "/path/to/odata/music.xsodata/Music_info",
"type": "JSON"
}
}
},
"sap.ui5": {
...
"models": {
"topmusics": {
"dataSource": "topmusics"
}
}
}
在XML视图中,我尝试传递一个参数来过滤前5个音乐并将数据加载到列表中。但是,由于数据不是从文件的“根”开始,而是在“d/results
”(参见json片段),我还必须传递这些信息,这使我得到以下代码: / p>
<List headerText="Top 5 Musics"
items="{
path : 'topmusics>/d/results',
parameters : {
$top : '5'
}}"
class="sapUiResponsiveMargin">
<CustomListItem type="Navigation" press="onClick">
<Link text="{topmusics>TITLE}"
press="onClick" />
</CustomListItem>
</List>
但是,使用此代码,我会获得完整的音乐列表,而不仅仅是前5名,这让我相信,因为我必须传递“/d/results
”xsodata
参数({{1 }}被忽略。我有什么方法可以做到这一点吗?
在侧节点上,我没有在"$top : '5'"
文件上设置"$top : '5'"
参数,因为我还希望能够将相同的模型与其他manifest.json
参数一起使用。< / p>
编辑:控制器的代码:
xsodata
答案 0 :(得分:1)
UI5似乎忽略了绑定参数中的$ top参数。此外,文档没有指定这种参数的存在性。然而,似乎有一个无证件的属性长度&#39;可以在绑定字符串中提供。
{路径:&#39; / Collection&#39;,length:5}
此外,由于您使用的是OData服务,因此使用OData模型而不是JSON模型是理想的选择。服务URL应该是除了EntitySet(/ Music_info)之外的.xsodata路径。
所以你的清单应该是这样的:
"topmusics": {
"uri": "/path/to/odata/music.xsodata",
"type": "OData"
}
您的XML将按此设置
<List headerText="Top 5 Musics"
items="{
path : 'topmusics>/Music_info',
length : 5
}"
class="sapUiResponsiveMargin">
<CustomListItem type="Navigation" press="onClick">
<Link text="{topmusics>TITLE}"
press="onClick" />
</CustomListItem>
</List>