2015-04-30 34 views
0

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

谢谢。

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

创作活动:

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(); 
} 

当推“保存”按钮(只有我试图改变事件的背景时调用Add方法到红色,带有setStyleClass):

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

回答

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(); 
     } 

至于展示是的,你需要一些更新来实现它:)

展示行为,如果你没有定义任何时间框架,但没有设置AllDay检查事件被添加,如eventModel.addEvent(event);其中默认时间设置为12am,是的,这是正常的!

更新

使用此方法添加新的事件,开始时间/结束是你的土地,由形式设置。我也将默认的构造函数签名粘贴到代码片段中。

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); 
} 
+0

嗨@Sarz,感谢您的回答,但我有这样的代码在我的应用程序(相同或相似的代码,展示): 'eventModel.addEvent(新DefaultScheduleEvent(“欧洲冠军联赛”,previousDay8Pm() ,previousDay11Pm()));' 方法previousDay8Pm(): '私人日期previousDay8Pm(){ \t日历T =(日历)今日()的clone(); \t t.set(Calendar.AM_PM,Calendar.PM); (Calendar.DATE,t.get(Calendar.DATE) - 1); \t t.set(Calendar.HOUR,8); \t return t.getTime(); \t}' 我已经在创建时定义了事件的时间范围。我会更新我的第一篇文章。 – Levid

+0

Hi @Sarz,它解决了!我的问题是,p:inputmask/f:convertdatetime在xhtml中只显示日,月和年。我认为,尽管模式是dd/MM/yyyy,但是小时节省了。我将99/99/9999 99:99添加到inputmask和dd/MM/yyyy HH:mm来转换datetime。也许我会限制使用outputtext,因为我不想改变事件数据。 addEvent方法只更新,因为这个想法是预先加载一个事件列表并更改选择/保存它的颜色(我只实现了“onEventSelect”方法来限制日期选择)。 谢谢你的帮助! – Levid

相关问题