Jasper reports 为什么在JasperServer 6.0.1上出现调度程序无效日期错误?

Jasper reports 为什么在JasperServer 6.0.1上出现调度程序无效日期错误?,jasper-reports,jasperserver,Jasper Reports,Jasperserver,我正在将jasperserver从3.7迁移到jasperserver 6.0.1,现在在新的jasperserver中,我希望日期格式为dd/mm/yyyy,但默认情况下,日期格式为yyyy-mm-dd。 为此,我在中更改了jasperserver_config.properties文件 apache-tomcat-7.0.65\webapps\jasperserver\WEB-INF\bundles\jasperserver\u config.properties 我把它改成了 #

我正在将jasperserver从3.7迁移到jasperserver 6.0.1,现在在新的jasperserver中,我希望日期格式为dd/mm/yyyy,但默认情况下,日期格式为yyyy-mm-dd。 为此,我在中更改了jasperserver_config.properties文件

apache-tomcat-7.0.65\webapps\jasperserver\WEB-INF\bundles\jasperserver\u config.properties

我把它改成了

    # Used for parsing and formatting dates by server
    date.format=dd/MM/yyyy
    datetime.format=dd/MM/yyyy HH:mm:ss
    time.format=HH:mm:ss

    # Used for parsing and formatting dates by calendar component (UI).
    # Pattern for date should match appropriated pattern from server properties.
    # The format for calendar component can be combinations of the following:
    # d  - day of month (no leading zero)
    # dd - day of month (two digit)
    # o  - day of year (no leading zeros)
    # oo - day of year (three digit)
    # D  - day name short
    # DD - day name long
    # m  - month of year (no leading zero)
    # mm - month of year (two digit)
    # M  - month name short
    # MM - month name long
    # y  - year (two digit)
    # yy - year (four digit)
    calendar.date.format=dd/mm/yyyy
    calendar.datetime.format=dd/mm/yyyy HH:mm:ss
    calendar.time.format=HH:mm:ss
它更改了日期格式,但当我计划任何报告时,日期字段显示为无效日期(见下文)。有人能帮我改变在jasperserver上正常工作的日期格式吗


JasperReports服务器的6.10版之前存在一个bug,请参阅。目前我不得不使用解决方案2

解决方案#1

如果可能,请更新至6.10版

解决方案#2

此解决方案有点长,但如果两个步骤(更改源代码、生成优化的js文件)都完成,则可以正常工作:

您必须编辑一个js文件才能正常工作。使用您的案例所需的模式

在文件
/opt/jasperreports-server-cp-5.5.0a/apache tomcat/webapps/jasperserver/scripts/scheduler/model/job.js
中,您必须更改以下内容:

第5行

发件人:

  var UI_DATE_PATTERN = "YYYY-MM-DD HH:mm";
致:

  var UI_DATE_PATTERN = "DD.MM.YYYY HH:mm";
 data.trigger.startDate = moment(data.trigger.startDate,UI_DATE_PATTERN).format(SERVICE_DATE_PATTERN);
第766行

发件人:

data.trigger.startDate = moment(data.trigger.startDate).format(SERVICE_DATE_PATTERN);
致:

  var UI_DATE_PATTERN = "DD.MM.YYYY HH:mm";
 data.trigger.startDate = moment(data.trigger.startDate,UI_DATE_PATTERN).format(SERVICE_DATE_PATTERN);

优化的Java脚本

注意:由于优化的Javascript文件(据我所知不是编辑的文件),请记住您可能需要重新创建优化的js文件,因为优化的文件是JRS使用的文件。至少在V5.6.x中是这样的:

  • 创建一个工作目录,您可以在其中复制JavaScript文件并安装和运行所需的脚本。在里面 在本例中,该目录称为Working
  • 为JasperReports服务器中的JavaScript文件副本创建子目录。此目录称为
    jssources
  • 将以下目录从JasperReports服务器目录
    复制到
    js sources

    •将
    /scripts
    复制到
    js源代码/scripts

    •将
    /fusion
    复制到
    js sources/fusion
    (可选,仅限专业版)

  • 备份您的
    js源代码
    目录
  • 为优化过程的输出创建一个
    js优化输出
    目录
  • 从下载并安装
    node.js
    。将
    nodejs
    文件夹直接放在工作文件夹中
  • 从下载
    r.js
    ,这是一个requirejs优化文件,并将其直接放在工作文件夹中
  • Working/js sources
    中对JavaScript文件进行更改
  • 打开命令行工具并运行命令以优化JavaScript。以下示例适用于Windows,它将输出放在Working/js optimization output文件夹中:

    %cd正在工作

    %nodejs\node r.js-o js sources\scripts\build.js appDir=js sources\scripts baseUrl=。优化=uglify2 dir=js优化输出

  • 将优化脚本从
    js优化输出
    复制到
    /optimized scripts
    (其中webapp是JR的位置)
  • 在应用服务器中重新加载web应用以查看更改

  • 注意:如果执行所有这些操作后出现问题,请记住清除浏览器缓存。

    我已尝试了您建议的所有步骤,但它确实生成了任何优化的脚本,我相信这可能是因为6.0.1中没有fusion目录。据我所知,该目录是可选的,因为只有专业版本才可能有。我想在执行这些步骤时出现了一些问题。很抱歉,我下载了不正确的require js,我已经更正,它现在正在生成优化的脚本,看起来很有希望,如果它有效,我会更新你,谢谢@tobi6:)