单个复杂类型数据属性的多个验证器

Multiple validators for single complex type data property

我遇到过这样一种情况,其中两个数据属性使用相同的复杂类型。下面是使用的实体。

    {
        "name": "dataProperty1",
        "complexTypeName": "ComplexType:#test"
    },
    {
        "name": "dataProperty2",
        "complexTypeName": "ComplexType:#test"
    }

复杂类型:

{
    "shortName": "ComplexType",
    "namespace": "test",
    "isComplexType": true,
    "dataProperties": [
            {
            "name": "fieldA",
            "dataType": "String",
            "maxLength": 50
        }
]
}

现在我的问题是,两个数据属性(dataProperty1 和 dataProperty2)都对复杂类型数据属性 (fieldA) 进行了特定验证。

我尝试为复杂数据属性 (fieldA) 添加两个不同的验证器,但两个验证器都在为两个数据属性执行。

            {
                "name": "fieldA",
                "dataType": "String",
                "maxLength": 50,
                "validators"[
                      {
                         //name :validationA
                      },
                      {
                         //name :validationB
                      }
                 ]
            }

假设 'dataProperty1' 只需要执行 'validationA' 而 'dataProperty2' 只需要执行 'validationB'。

对于这种情况,有什么特别需要处理的吗?

请帮助解决此问题。

提前致谢。

在您的验证函数中,'context' 参数将有一个 'propertyName' 属性。此 'propertyName' 将是您的 属性 的路径,因此您可以区分 'billingAddress' 和 'locationAddress'。此外,如果您验证 complexType 的 sub属性,则 'context.propertyName' 将是您的 属性 的虚线路径,即类似于 'billingAddress.city' 与 'locationAddress.city'。

所以你可以像这样写一个验证器

  var valFn = function (v, context) {
    var propName = context.propertyName;
    // change the validation logic here depending on the 'propName';
  };
  var myValidator = new Validator("MyValidator", valFn,
      { messageTemplate: "Custom message template..." });