在事件eventMove上的primefaces计划中获取错误的日期

时间:2013-08-23 14:37:43

标签: java jsf jsf-2 primefaces

我正在使用primefaces版本3.5和p:schedule Control

我在事件“eventMove”上的日期错误。

我的代码片段如下

内部托管Bean类ScheduleController

public void onEventMove(ScheduleEntryMoveEvent scheduleEntryMoveEvent)
{
      Expense exp = (Expense) scheduleEntryMoveEvent.getScheduleEvent()
            .getData();
      System.out.println("Expense Date="+exp.getDate())
}

和费用类如下     import java.util.Date;

public class Expense
{
    private Date date;
    public Date getDate()
    {
        return date;
    }
    public void setDate(Date date)
    {
        this.date = date;
    }
}

用于在计划中存储费用

   public ScheduleController()
   {
         allExpenses = expensePeer.getList();
         for (Expense expense : allExpenses)
         {
                  eventModel.addEvent(new DefaultScheduleEvent(expense
                .getDescription(), expense.getDate(), expense.getDate(),
                expense));
         }
   }

当我点击8月15日并将时间表事件(费用在我的情况下)X到8月16日时,产量是8月17日,预计产量是8月16日。

其他一些动作正在跟随

从15变为14,预期14,变为13

从13移动到10,预期10,得到7

从7变为12,预期为12,变为17

1 个答案:

答案 0 :(得分:1)

在更新日期之前尝试此操作

   public void onEventMove(ScheduleEntryMoveEvent scheduleEntryMoveEvent)
   {
      Expense exp = (Expense) scheduleEntryMoveEvent.getScheduleEvent()
        .getData();
      System.out.println("Expense Date Before="+exp.getDate())
      java.util.Calendar newCal = new GregorianCalendar();
      newCal.setTime(exp.getDate());
      newCal.add(Calendar.DATE, (-1 * scheduleEntryMoveEvent.getDayDelta()));
      newCal.add(Calendar.MINUTE, (-1 * scheduleEntryMoveEvent.getMinuteDelta()));
      exp.setDate(newCal.getTime());
      System.out.println("Expense Date After="+exp.getDate());
   }