我在我的应用程序中使用了一个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();
}
答案 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);
}