2015-04-30 64 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

相關問題