Primefaces p:schedule不正确地显示计划中具有相同开始和结束日期时间的事件

Primefaces p:schedule不正确地显示计划中具有相同开始和结束日期时间的事件,primefaces,fullcalendar,Primefaces,Fullcalendar,我在日程表中创建了两个事件(PrimeFaces日程表演示) 对于事件“1”,使用参数创建 From: 08/02/2016 06:00 To: 08/02/2016 06:00 及活动“2” 为什么在计划事件“1”中显示多于“2”?我怎么能修好它 谢谢我想您并没有对其进行一些调试和小实验。首先,只有持续时间为0的事件才会发生,在响应中不少于“一小时”(更正标题),您将看到,当您创建持续时间为0(零)的事件时,会正确报告开始日期时间和结束日期时间 因此,将此0持续时间事件显示为2小时事

我在日程表中创建了两个事件(PrimeFaces日程表演示)

对于事件“1”,使用参数创建

From: 08/02/2016 06:00 To: 08/02/2016 06:00 
及活动“2”

为什么在计划事件“1”中显示多于“2”?我怎么能修好它


谢谢

我想您并没有对其进行一些调试和小实验。首先,只有持续时间为0的事件才会发生,在响应中不少于“一小时”(更正标题),您将看到,当您创建持续时间为0(零)的事件时,会正确报告开始日期时间和结束日期时间


因此,将此0持续时间事件显示为2小时事件的是客户端。很容易发现这个“客户端”实际上是jquery fullCalendar,只需稍加搜索,就可以发现它有默认值,其中包括:

defaultTimedEventDuration:“02:00:00”
问题很清楚。因此,由于显示0持续时间事件是“胡说八道”,它假定没有结束日期,默认值生效(我没有调试到PrimeFaces使用的fullCalendar.js文件中),因此它明显地转换为两小时事件。这就是为什么的答案

关于“如何解决”的答案不能完全回答,因为你没有说明你预期的行为是什么

最简单的解决方案

  • 防止用户添加这样的事件
  • 将默认值设置为填充模型时所需的值(提交时间或渲染时间)
另外一个选项更复杂,我没有尝试过

但是现在很清楚,FullCalendar的默认设置很可能起作用,因此需要覆盖它们。在5.3 PrimeFaces文档中,第402页提到了一个名为
extender
的属性,定义如下

扩展底层fullcalendar插件选项的javascript函数名称

因此,将
extender=“scheduleExt()
添加到计划中

创建相应的javascript函数并正确填充(这是一个示例,我没有测试它,请尝试)

函数scheduleExt(){
//this=调度小部件实例
//this.cfg=选项
this.cfg.defaultTimedEventDuration:“02:00:00”
};
}

我假设您没有对进行一些调试和小实验。首先,只有持续时间为0的事件才会发生,在响应中不少于“一小时”(更正标题),当您创建0(零)时,您会看到持续时间事件,正确报告开始日期时间和结束日期时间


因此,是客户端将此0持续时间事件显示为2小时事件。很容易发现此“客户端”实际上是jquery fullCalendar,只需稍加搜索,您就可以发现它有默认值,其中包括:

defaultTimedEventDuration:“02:00:00”
原因很清楚。因此,由于显示0持续时间事件是“胡说八道”,它假定没有结束日期,默认值生效(我没有调试到PrimeFaces使用的fullCalendar.js文件中),因此,明显地转换为两小时事件。这就是为什么的答案

关于“如何解决”的答案不能完全回答,因为你没有说明你预期的行为是什么

最简单的解决方案

  • 防止用户添加这样的事件
  • 将默认值设置为填充模型时所需的值(提交时间或渲染时间)
另外一个选项更复杂,我没有尝试过

但是现在很清楚,FullCalendar的默认设置很可能起作用,因此需要覆盖它们。在5.3 PrimeFaces文档中,第402页提到了一个名为
extender
的属性,其定义如下

扩展底层fullcalendar插件选项的javascript函数名称

因此,将
extender=“scheduleExt()
添加到计划中

创建相应的javascript函数并正确填充(这是一个示例,我没有测试它,请尝试)

函数scheduleExt(){
//this=调度小部件实例
//this.cfg=选项
this.cfg.defaultTimedEventDuration:“02:00:00”
};
}

如果@Kukeltje解决方案无效,则在primefaces.jar中进行更改

primefaces /src/main/resources/META-INF/resources/primefaces/schedule/schedule.js
查找
defaultTimedEventDuration:“02:00:00”
,然后根据需要修改默认的持续时间。这对我来说非常有效


注意:@Kukeltje解决方案不适用于我,因此我在Primefaces 6.0 jar上实现了这一点

如果@Kukeltje解决方案不适用,则在Primefaces.jar中进行更改

primefaces /src/main/resources/META-INF/resources/primefaces/schedule/schedule.js
查找
defaultTimedEventDuration:“02:00:00”
,然后根据需要修改默认的持续时间。这对我来说非常有效


注意:@Kukeltje解决方案不适合我,所以我在Primefaces 6.0 jar上实现了这一点

谢谢您的回答!但是,我没有写“少于一个小时”),我理解这个事件是正确创建的,但我搞不懂它为什么会这样显示。你的回答对我帮助很大。谢谢“一小时内结束”读起来就像一小时内结束一样。否则它肯定是不正确的,因为它在0小时内结束。。。所有这些都可以通过“调试”、查看源代码等轻松发现。感谢您的回答!但是,我没有写“少于一个小时”),我理解这个事件是正确创建的,但我搞不懂它为什么会这样显示。你的回答对我帮助很大。谢谢“一小时内结束”读起来就像一小时内结束一样。否则它将被定义