Primefaces Schedule Error,保存事件将小时自动更改为上午12点

时间:2015-04-30 07:50:09

标签: jsf primefaces

我在我的应用程序中使用了一个primefaces计划组件,我发现了一个奇怪的行为。当我选择一个事件并按下“保存按钮”时,小时将重置为上午12点。经过大量时间的调查,转到Primefaces Showcase页面获取更多信息。 在Showcase中,计划行为是相同的。例如,在计划可编辑示例http://www.primefaces.org/showcase/ui/data/schedule.xhtml中,选择标题为“冠军联赛”的活动,该日期为2015年4月28日,小时为8:00至11:00,并按下保存按钮。它会自动将小时更改为上午12点。这是正常行为?????

感谢。

编辑:我将添加我的应用程序中的代码,这与展示相同或非常相似。

创建活动:

eventModel.addEvent(new DefaultScheduleEvent("Champions League Match", previousDay8Pm(), previousDay11Pm()));

设定时限的方法:

    private Date previousDay8Pm() {
    Calendar t = (Calendar) today().clone();
    t.set(Calendar.AM_PM, Calendar.PM);
    t.set(Calendar.DATE, t.get(Calendar.DATE) - 1);
    t.set(Calendar.HOUR, 8);

    return t.getTime();
}

private Date previousDay11Pm() {
    Calendar t = (Calendar) today().clone();
    t.set(Calendar.AM_PM, Calendar.PM);
    t.set(Calendar.DATE, t.get(Calendar.DATE) - 1);
    t.set(Calendar.HOUR, 11);

    return t.getTime();
}

添加按下“保存”按钮时调用的方法(仅我尝试将事件背景更改为红色,使用setStyleClass):

public void addEvent(ActionEvent actionEvent) {
    event.setStyleClass("emp1");
    eventModel.updateEvent(event);         
    event = new DefaultScheduleEvent();
}

1 个答案:

答案 0 :(得分:0)

因为它只是一个例子。

使用时间选择器添加输入文本并在特定事件上添加事件,在创建事件时指定时间范围,如:

eventModel.addEvent(new DefaultScheduleEvent("Birthday Party", today1Pm(),todat6Pm()); 

其中

    private Date today1Pm() {
            Calendar t = (Calendar) today().clone();
            t.set(Calendar.AM_PM, Calendar.PM);
            t.set(Calendar.HOUR, 1);

            return t.getTime();
        }

        private Date today6Pm() {
            Calendar t = (Calendar) today().clone(); 
            t.set(Calendar.AM_PM, Calendar.PM);
            t.set(Calendar.HOUR, 6);

            return t.getTime();
        } 

至于showcase yes,你需要一些更新来实现它:)

展示的行为,如果你没有定义任何时间范围而没有设置AllDay检查事件,就像eventModel.addEvent(event);一样,将默认时间设置为上午12点,是的,这是正常的!

<强>更新

使用此方法添加新事件,startTime / endTime是由表单设置的字段。我还使用片段粘贴默认构造函数签名。

public void addEvent(ActionEvent actionEvent) {
    if(event.getId() == null)
        //DefaultScheduleEvent(String title, Date start, Date end, String styleClass) ;
        eventModel.addEvent(new DefaultScheduleEvent(actionEvent.Title(), calculateTime(startTime), calculateTime(endTime),"emp1"));
    else
        eventModel.updateEvent(event);
}