AEM Forms 6.5:HTML Forms中的手动日期输入将错误的格式导出到PDF

本文说明如何解决在AEM Forms HTML中手动输入日期的问题,表单会以意外的格式导出到PDF,尽管已配置数据模式。

描述 description

环境

Adobe Experience Manager (AEM) Forms 6.5(JEE,独立,开发和生产)

问题/症状

当用户在HTML表单的日期字段中手动输入日期值(例如,M/D/YYYYMM/DD/YYM/D/YY)时,导出的PDF保留手动输入的格式,而不是将其转换为AEM Forms Designer文件中 数据模式 属性定义的预期格式(例如,YYYY-MM-DD)。

  • 仅手动键入日期时才会出现问题;使用日期选取器会导致格式正确。
  • 在HTML表单中,字段可能会以可视化形式通过Tab-Out重新设置格式,但基础值并非始终更新。
  • 在提交表单且使用输出服务生成PDF时,PDF可能会显示手动输入的原始值。
  • 此行为特定于HTML表单中的手动日期输入,不会影响日期选取器的选择。

未为此问题记录任何特定错误消息。

解决方法 resolution

  1. 添加脚本以标准化手动日期输入:

    • 在AEM Forms Designer中,选择受影响的日期字段。

    • 将以下脚本添加到字段的验证或退出事件,以规范各种手动日期输入格式:

      code language-none
      if (this.rawValue != null) {
                      var val = this.rawValue;
                      // Split input by "/"
                      var parts = val.split("/");
                      if (parts.length == 3) {
                          var month = parts[ 0] ;
                          var day = parts[ 1] ;
                          var year = parts[ 2] ;
                          // Pad month/day
                          if (month.length == 1) { month = "0" + month; }
                          if (day.length == 1) { day = "0" + day; }
                          // Convert 2-digit year to 4-digit
                          if (year.length == 2) { year = "20" + year; }
                          this.rawValue = year + "-" + month + "-" + day;
                      }
                  }
      
  2. 测试表单:

    • 在HTML和PDF模式下预览表单。
    • 手动输入各种格式的日期,并验证导出的PDF是否以预期YYYY-MM-DD格式显示日期。
  3. 部署更新的表单:

    • 确认修复后,将更新的表单部署到相关环境。

原因

HTML Forms中的手动日期输入无法始终触发对配置的数据模式的标准化,从而导致将原始输入格式导出到PDF。 所提供的脚本可确保在导出之前将所有手动条目重新格式化为预期的模式。

recommendation-more-help
experience-cloud-kcs-help-kbarticles