如何在 SAPUI5 中针对 odata 服务更正绑定浮点数 属性?
How to correct bind a float property against odata service in SAPUI5?
几乎每个版本的 SAPUI5 我都遇到 sap.ui.model.type.Float
数据类型与 ODataModel 组合的奇怪问题。
见老post:How to handle number format of OData Edm.Decimal in sapui5 correct?
后来我构建了一个 hack 来解决问题 (SAPUI5 1.26.x),它看起来像这里提到的那样:
效果很好。现在我尝试升级到 1.28.12 和 sap.ui.model.odata.v2.ODataModel
模型。
我有以下情况:
- Edm.Decimal 在服务器上以英文语言环境发送小数(分隔符是 .)
- 前端应处理用户语言,但至少要处理德语
我使用以下类型绑定控件:
return new sap.ui.model.type.Float({
maxFractionDigits : 2,
minFractionDigits: 2,
source : {
maxFractionDigits : 2,
minFractionDigits: 2
}
});
根据文档,source
用于定义模型格式。
如果我将它用作 posted,post 将使用逗号作为分隔符而不是点。
如果我不使用它,模型将收到一个浮点数而不是字符串(与 1.26.x 相同的问题)。
将 Edm.Decimal
与 Float
数据类型绑定的正确解决方案是什么,以便我可以在浏览器的用户区域设置中输入数字,并且它始终会正确发送到服务器?
同时我检测到以下文档:
https://openui5beta.hana.ondemand.com/#docs/guide/91f30dbf6f4d1014b6dd926db0e91070.html
如果 link 不起作用,请在 https://openui5beta.hana.ondemand.com
中搜索 sap.ui.model.type.Float
我现在使用以下代码:
return new sap.ui.model.type.Float({
maxFractionDigits : 2,
minFractionDigits: 2,
source : {
groupingSeparator: ",",
decimalSeparator: ".",
groupingEnabled: false,
maxFractionDigits : 2,
minFractionDigits: 2
}
});
只显示 Edm.Decimal 看起来很复杂,不确定是否有更简单的解决方案?我希望客户端 sap.ui.model.odata.v2.ODataModel
更聪明,但也许不是?
我一直在努力解决你遇到的同样问题,并且无法通过研究找到合适的解决方案。到目前为止,我正在使用以下方法从输入字段中解析出所需的字符串,该字符串的值类型为 sap.ui.model.type.Float:
new sap.ui.model.odata.type.Decimal().parseValue(input.value, "float");
之后,您可以将此字符串分配给您想要create/update的OData条目。
不确定这是否是一个好的解决方案,因为我是 sapui5 的新手...只是想分享我对这个主题的看法。
几乎每个版本的 SAPUI5 我都遇到 sap.ui.model.type.Float
数据类型与 ODataModel 组合的奇怪问题。
见老post:How to handle number format of OData Edm.Decimal in sapui5 correct?
后来我构建了一个 hack 来解决问题 (SAPUI5 1.26.x),它看起来像这里提到的那样:
效果很好。现在我尝试升级到 1.28.12 和 sap.ui.model.odata.v2.ODataModel
模型。
我有以下情况:
- Edm.Decimal 在服务器上以英文语言环境发送小数(分隔符是 .)
- 前端应处理用户语言,但至少要处理德语
我使用以下类型绑定控件:
return new sap.ui.model.type.Float({
maxFractionDigits : 2,
minFractionDigits: 2,
source : {
maxFractionDigits : 2,
minFractionDigits: 2
}
});
根据文档,source
用于定义模型格式。
如果我将它用作 posted,post 将使用逗号作为分隔符而不是点。
如果我不使用它,模型将收到一个浮点数而不是字符串(与 1.26.x 相同的问题)。
将 Edm.Decimal
与 Float
数据类型绑定的正确解决方案是什么,以便我可以在浏览器的用户区域设置中输入数字,并且它始终会正确发送到服务器?
同时我检测到以下文档: https://openui5beta.hana.ondemand.com/#docs/guide/91f30dbf6f4d1014b6dd926db0e91070.html
如果 link 不起作用,请在 https://openui5beta.hana.ondemand.com
sap.ui.model.type.Float
我现在使用以下代码:
return new sap.ui.model.type.Float({
maxFractionDigits : 2,
minFractionDigits: 2,
source : {
groupingSeparator: ",",
decimalSeparator: ".",
groupingEnabled: false,
maxFractionDigits : 2,
minFractionDigits: 2
}
});
只显示 Edm.Decimal 看起来很复杂,不确定是否有更简单的解决方案?我希望客户端 sap.ui.model.odata.v2.ODataModel
更聪明,但也许不是?
我一直在努力解决你遇到的同样问题,并且无法通过研究找到合适的解决方案。到目前为止,我正在使用以下方法从输入字段中解析出所需的字符串,该字符串的值类型为 sap.ui.model.type.Float:
new sap.ui.model.odata.type.Decimal().parseValue(input.value, "float");
之后,您可以将此字符串分配给您想要create/update的OData条目。
不确定这是否是一个好的解决方案,因为我是 sapui5 的新手...只是想分享我对这个主题的看法。