如何在SAPUI5中更正绑定浮点属性与odata服务?

时间:2015-08-18 14:45:14

标签: binding odata sapui5

对于每个版本的SAPUI5,我对sap.ui.model.type.Float数据类型和ODataModel都有奇怪的问题。

查看我的旧帖子:How to handle number format of OData Edm.Decimal in sapui5 correct?

后来我构建了一个解决问题的黑客(SAPUI5 1.26.x),它看起来像这里提到的那样: https://stackoverflow.com/a/27147305/3783327

这很好用。现在我尝试升级到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用于定义模型格式。

如果我在发布时使用它,则帖子将使用逗号作为分隔符而不是点。

如果我不使用它,模型将收到一个浮点而不是一个字符串(与1.26.x相同的问题)。

Edm.DecimalFloat数据类型绑定的正确解决方案是什么,以便我可以在浏览器的用户区域设置中输入数字,并始终将其发送到服务器?< / p>

2 个答案:

答案 0 :(得分:1)

我已经为你所遇到的同样问题而挣扎,并且无法通过研究找到合适的解决方案。到目前为止,我使用以下方法从输入字段解析所需的字符串,其值为sap.ui.model.type.Float:

new sap.ui.model.odata.type.Decimal().parseValue(input.value, "float");

之后,您可以将此字符串分配给您要创建/更新的OData条目。

不确定这是否是一个很好的解决方案,因为我对sapui5很新...只是想分享我对这个主题的想法。

答案 1 :(得分:0)

同时我检测到以下文件: https://openui5beta.hana.ondemand.com/#docs/guide/91f30dbf6f4d1014b6dd926db0e91070.html

如果链接不起作用,请在sap.ui.model.type.Float

中搜索https://openui5beta.hana.ondemand.com

我现在使用以下代码:

            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更聪明,但也许不是?