Workflow 自定义表单字段(日期字段)验证处理程序

Workflow 自定义表单字段(日期字段)验证处理程序,workflow,validation,share,alfresco,Workflow,Validation,Share,Alfresco,我正在尝试为工作流表单上的一些自定义字段创建自定义验证处理程序。A有两个字段:项目开始日期和项目结束日期 对于这两个字段,我需要两种类型的验证: 项目开始日期不能小于今天的日期 项目结束日期必须等于或大于项目开始日期 然而,我仍然在开始创建自定义验证处理程序。首先,我尝试了一些只包含数字的文本字段的简单验证处理程序,但这不起作用。我做了以下工作: 我在share-config-custom.xml中添加了 <config> <forms> <depend

我正在尝试为工作流表单上的一些自定义字段创建自定义验证处理程序。A有两个字段:项目开始日期和项目结束日期

对于这两个字段,我需要两种类型的验证:

  • 项目开始日期不能小于今天的日期
  • 项目结束日期必须等于或大于项目开始日期
  • 然而,我仍然在开始创建自定义验证处理程序。首先,我尝试了一些只包含数字的文本字段的简单验证处理程序,但这不起作用。我做了以下工作:

    我在share-config-custom.xml中添加了

    <config>
      <forms>
        <dependencies>
         <js src="/custom-form-validation.js" />
        </dependencies>
      </forms>
    
    我将custom-form-validation.js文件放在opt\tomcat\shared\classes\alfresco\web扩展文件夹中,但根本没有字段验证?有什么建议吗

    问候,,
    Share中的Aleksadnar

    字段验证作为客户端JavaScript实现。因此,您的JavaScript文件位于web应用程序的根目录中(最好是该目录下的目录结构),而不是位于web-INF下。例如,您可能希望将其置于$TOMCAT_HOME/webapps/share/extension/js下。您可能需要相应地调整依赖项引用

    接下来,不要将自定义代码放在Alfresco的命名空间中。创造你自己的。您可以通过在JavaScript文件的开头放置以下内容来创建自己的命名空间:

    if (typeof SomeCo == "undefined" || !SomeCo)
    {
       var SomeCo = {};
    }
    
    您可能还想缩小JavaScript。然后,启用“共享调试”。您可以通过将以下内容放在share-config-custom.xml(位于$TOMCAT_HOME/webapps/share/WEB-INF/classes/alfresco/WEB extension下)中来实现:

    
    假的
    假的
    

    有了它,您可以使用浏览器的开发人员控制台逐步检查客户端JavaScript,并找出验证器不工作的原因。

    您可以使用另一种方法来实现表单字段验证处理程序,直接使用JavaScript。我的意思是,您可以添加一个侦听器来控制表单提交的时间,并添加一个条件来取消提交。因此,在加载表单时,可以使用如下代码:

    //Add a listener to control when the form is submitted
    document.body.addEventListener("submit", function (event) {
    
         //If there are wrong values
         if(wrongValues()){
              //Cancel the event
              event.stopPropagation();
              event.preventDefault();
         }
    }, true);
    

    如果您想了解此解决方案的更多详细信息,可以访问此

    ,正如Jeff所说,字段验证是作为客户端javascript实现的。如果您想要一个更安全的解决方案,您可能需要为您的工作流任务实施onUpdate节点策略,并在其中验证您的数据。
    if (typeof SomeCo == "undefined" || !SomeCo)
    {
       var SomeCo = {};
    }
    
    <alfresco-config>
        <!-- Put Share Client in debug mode -->
        <config replace="true">
            <flags>
                <client-debug>false</client-debug>
                <client-debug-autologging>false</client-debug-autologging>
            </flags>
        </config>
    </alfresco-config>
    
    //Add a listener to control when the form is submitted
    document.body.addEventListener("submit", function (event) {
    
         //If there are wrong values
         if(wrongValues()){
              //Cancel the event
              event.stopPropagation();
              event.preventDefault();
         }
    }, true);