我需要拒绝sap.m.Input控件,除整数值外的任何输入。因此,在输入中只能输入0-9,没有任何符号(+-)或任何小数点分隔符。我找不到好的解决方案。以XML格式声明的视图,最好的方法是,如果可能的话,只需用其他参数更改此XML。

可能的解决方案:


第一个-编写自定义格式化程序。
第二个-尝试找到一些带有类型的标准解决方案。我发现了内部数据类型及其设置,但似乎它们无法正常工作。

最佳答案

在这种情况下,自定义格式化程序不会对您有任何帮助,因为它只能单独使用(模型->视图)。

但是数据类型是您的朋友。我建议sap.ui.model.type.Integer的最小约束为0。

<Input value="{path: '/value', type: 'sap.ui.model.type.Integer', constraints:{minimum:0}}" />


但是,这确实有两个先决条件:


您需要启用复杂的数据绑定。这可以在带有data-sap-ui-compatVersion属性的index.html中的bootstrap标签中完成。至少需要版本1.26。您可以使用值edge指定最新版本:


<script src="https://openui5.hana.ondemand.com/resources/sap-ui-core.js"
        id="sap-ui-bootstrap"
        data-sap-ui-theme="sap_bluecrystal"
        data-sap-ui-libs="sap.m"
        data-sap-ui-compatVersion="edge">


或者,您可以使用data-sap-ui-bindingSyntax="complex"


如果用户输入无效数据,则数据类型将引发ValidationException。该错误将被忽略,但不会更新模型。要获得用户的一些反馈,可以在MessageManager处注册控件或整个视图:


sap.ui.getCore().getMessageManager().registerObject(this.getView(), true);


您还可以在组件中或实例化组件时启用handleValidation

Example on JSBin

关于sapui5 - sap.m.Input只允许正整数值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37252221/

10-16 21:45