我在计划中创建了两个事件(PrimeFaces Schedule Demo)http://www.primefaces.org/showcase/ui/data/schedule.xhtml
对于事件“1”,使用参数
创建From: 08/02/2016 06:00 To: 08/02/2016 06:00
事件“2”
From: 09/02/2016 06:00 To: 09/02/2016 07:00.
为什么在计划事件中“1”显示超过“2”?我怎么解决它?
感谢
答案 0 :(得分:2)
我假设你没有做一些调试和实验。首先,仅会发生0持续时间的事件,而不是“不到1小时”(更正了您的标题)在回复中,您会看到,当您创建 时0(零) 持续时间事件,正确报告开始日期时间和结束日期时间。
<?xml version='1.0' encoding='UTF-8'?>
<partial-response id="j_id1">
<changes>
<update id="j_idt88:schedule"><![CDATA[{"events" : [
{"id": "3fbce3ee-7747-4cef-8362-c8d08d004c6e","title": "Champions League Match","start": "2016-02-17T21:00:00+0200","end": "2016-02-18T00:00:00+0200","allDay":false,"editable":true},
{"id": "df70f7f0-6806-49a8-8991-9b109c397757","title": "Birthday Party","start": "2016-02-18T14:00:00+0200","end": "2016-02-18T19:00:00+0200","allDay":false,"editable":true},
{"id": "7415213a-d721-4ffd-a60a-d82e88528c78","title": "Breakfast at Tiffanys","start": "2016-02-19T10:00:00+0200","end": "2016-02-19T12:00:00+0200","allDay":false,"editable":true},
{"id": "81c0149b-0850-4b90-a345-4e89a764a2a5","title": "Plant the new garden stuff","start": "2016-02-20T16:00:00+0200","end": "2016-02-22T16:00:00+0200","allDay":false,"editable":true},
{"id": "8087111d-c559-4add-a498-2f3f58a02f0d","title": "MyNewEvent","start": "2016-02-16T12:30:00+0200","end": "2016-02-16T12:30:00+0200","allDay":false,"editable":true}]}]]>
</update>
<update id="j_id1:javax.faces.ViewState:0">
<![CDATA[5869453577302409685:-7766841559488939365]]>
</update></changes>
</partial-response>
因此,客户端显示此0持续时间事件为2小时事件。很容易发现这个“客户端”实际上是jquery-fullCalendar并且通过一些小搜索,你可以发现它有默认值,其中包括:
defaultTimedEventDuration:"02:00:00"
documentation about this很清楚。因此,显示0持续时间事件是“无意义”,它假定没有结束日期并且默认启动(我没有调试到PrimeFaces使用的fullCalendar.js文件中),因此它是 明显 转换为两小时的活动。所以这就是答案为什么。
“如何解决” 的答案无法 得到全面解答,因为您无处陈述您的预期行为。
最简单的解决方案 :
另一个选项更复杂,我没试过
但是现在很清楚,FullCalendar的默认设置最有可能发挥作用,它们需要被覆盖。好吧,在5.3 PrimeFaces文档中,第402页提到了一些名为extender
的属性,其定义如下
扩展底层fullcalendar插件选项的javascript函数名称。
因此将extender="scheduleExt()
添加到日程表
创建一个相应的javascript函数并正确填充它(这是一个例子,我没有测试它,试试)
function scheduleExt() {
//this = schedule widget instance
//this.cfg = options
this.cfg.defaultTimedEventDuration:"02:00:00"
};
}
答案 1 :(得分:0)
如果@Kukeltje解决方案不起作用,那么在primefaces.jar中进行更改
primefaces /src/main/resources/META-INF/resources/primefaces/schedule/schedule.js
找到defaultTimedEventDuration:"02:00:00"
,然后根据您的要求修改默认的时间持续时间。这对我来说非常合适。
注意: @Kukeltje解决方案对我不起作用所以我在Primefaces 6.0 jar上实现了这个