提交时OpenUI5表单验证

时间:2016-03-23 16:18:20

标签: sapui5

我从openui5开始。我想验证表单的所有字段。

我正在使用

sap.ui.getCore().getMessageManager().registerObject

this.getView().attachValidationError 
控制器上的

,当我更改表单内输入的值时运行完美。

但是当我在表单按钮中触发按下事件时,如何验证所有表单输入?

我发现的唯一solution,但这需要单独验证每个字段。

是否有办法调用MessageManager来验证和呈现所有字段?

1 个答案:

答案 0 :(得分:-1)

请参阅我之前写过的博客:http://scn.sap.com/community/developer-center/front-end/blog/2015/11/01/generic-sapui5-form-validator

它提供了在任何给定时间验证表单的方法,例如单击提交按钮

提供实用程序类(it's on GitHub)有点太牵强了,但其背后的想法如下:

  • 识别您的表单根容器,并(递归地)查找从sap.ui.core.Control继承的任何子项(因为您当然只想验证控件)
  • 检查提供的控件是否可见且实际可见(检查无法看到的任何内容时没有意义)
  • 然后检查是否设置了约束
  • 如果是,则尝试将控件验证为内联验证
  • 但是,如果无法验证控件,则可能具有可以验证的聚合(即,它可以是可以保存子控件的表单,表格等)。然后我们检查子项,并再次递归调用validate方法

主要部分实际上是调用每个子控件的验证:

try {
    // get the control's binding (oControl is the control you want to validate)
    var oControlBinding = oControl.getBinding("value"); // or selectedKey, text, etc
    // get the formatted value
    var oExternalValue  = oControl.getProperty("value");
    // get the actual, internal value
    var oInternalValue  = oControlBinding.getType().parseValue(oExternalValue, oControlBinding.sInternalType);
    // trigger the actual validation
    oControlBinding.getType().validateValue(oInternalValue);
}