我遇到过两种数据属性使用相同复杂类型的情况。以下是使用的实体。
{
"name": "dataProperty1",
"complexTypeName": "ComplexType:#test"
},
{
"name": "dataProperty2",
"complexTypeName": "ComplexType:#test"
}
的ComplexType:
{
"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'。
这种情况需要特别处理吗?
请帮助解决此问题。
提前致谢。
答案 0 :(得分:0)
在您的验证功能中,'上下文'参数将具有' propertyName'属性。这个' propertyName'将是您的财产的路径,因此您可以区分说" billingAddress'和' locationAddress'。此外,如果您验证complexType的子属性' context.propertyName'将是您的财产的虚线路径,即类似于' billingAddress.city' vs' 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..." });