Validation Alfresco共享表单:如何为非必填字段定义自定义验证处理程序?

Validation Alfresco共享表单:如何为非必填字段定义自定义验证处理程序?,validation,alfresco,alfresco-share,Validation,Alfresco,Alfresco Share,我已经阅读了Alfresco文档和wiki,但仍然不清楚:在Alfresco共享表单中为特定字段定义自定义验证处理程序的正确方法是什么 问题是,我在论坛中随处可见的方法总是覆盖强制类型,因此只有当字段设置为MANDATORY=“true”时,才会调用验证处理程序 上述验证函数在任何时候都不会被调用,无论是在我更改字段值还是任何其他表单字段值时 接下来,当我在Alfresco论坛的某个地方读到以下内容时,我尝试手动注册验证处理程序: YAHOO.Bubbling.fire("registerVal

我已经阅读了Alfresco文档和wiki,但仍然不清楚:在Alfresco共享表单中为特定字段定义自定义验证处理程序的正确方法是什么

问题是,我在论坛中随处可见的方法总是覆盖强制类型,因此只有当字段设置为MANDATORY=“true”时,才会调用验证处理程序

上述验证函数在任何时候都不会被调用,无论是在我更改字段值还是任何其他表单字段值时

接下来,当我在Alfresco论坛的某个地方读到以下内容时,我尝试手动注册验证处理程序:

YAHOO.Bubbling.fire("registerValidationHandler",{fieldId: 'fieldIdOfMyField',handler: Alfresco.forms.validation.metahead, when: "onkeyup"});
但这只能部分起作用。它只在任何其他(必需)表单字段更改时调用我的验证处理程序函数(这是正常的,因为整个表单验证在字段更改时发生),但在我更改我自己的字段(“我的:字段”)的值时,不会调用我的验证处理程序函数


(还有,为什么验证处理程序需要手动注册;我认为这就是xml中约束配置的目的。)

只需省略type属性,它的内容如下:

<constraint validation-handler="YourCompany.forms.validation.yourValidator" event="keyup" />

返回false,显示的消息解析为消息资源中的
YourCompany.forms.validation.yourvalidater.message的值(默认映射)。

谢谢,但这也不起作用/触发验证方法,请参阅我更新的问题。在4.2.e,它适用于我,没有类型属性,没有验证处理程序的“附加”注册(触发事件)。您使用的是哪个版本的Alfresco Share?我现在使用的是4.0.2.9 Enterprise,这是给定项目中的生产系统。我将尝试使用更高版本。
Alfresco.forms.validation.metahead = function FormEditMetadataWebWorkflowExt_metahead(field, args, event, form, silent, message)
   {
    console.log('metahead!');
    return false;
   }
YAHOO.Bubbling.fire("registerValidationHandler",{fieldId: 'fieldIdOfMyField',handler: Alfresco.forms.validation.metahead, when: "onkeyup"});
<constraint validation-handler="YourCompany.forms.validation.yourValidator" event="keyup" />
YourCompany.forms.validation.yourValidator = function (field, args, event, form, silent, message)
{...}