CalendarEventMoveEvent

Есть демо-проект jmix-quickstart, в котором в том числе показываются возможности календаря - GitHub - jmix-framework/jmix-quickstart at administrative-ui

Если к этому календарю добавить событие на перенос элемента календаря CalendarEventMoveEvent, то в этом событии не могу добраться до нового даты/времени передвинутого задания календаря, получаю ошибку cannot be cast to class.

Делаю так -

    @Subscribe("tasksCalendar")
    public void onTasksCalendarCalendarEventMove(Calendar.CalendarEventMoveEvent<Task> event) {

        notifications.create().withCaption(
                event.getNewStart().getStartDate().toString()
                )
        .withType(Notifications.NotificationType.WARNING).show();

    }

Получаю такое -

ClassCastException: class java.time.LocalDateTime cannot be cast to class com.company.jmixpm.entity.Task

Как в этом событии получить доступ к новому дате/времени, полученном в результате сдвига задачи календаря на экране?

Добрый день!

Спасибо что сообщили о проблеме! Судя по всему CalendarEventMoveEvent имеет неправильный возращаемый тип для методов:

  • getNewStart();
  • getNewEnd()

Создал задачу: Calendar injection has incorrect generic type · Issue #1410 · jmix-framework/jmix · GitHub

Чтобы обойти проблему, поменяйте генерик тип у события на LocalDateTime:

@Subscribe("tasksCalendar")
public void onTasksCalendarCalendarEventMove(Calendar.CalendarEventMoveEvent<LocalDateTime> event) {
    log.info("newEnd: " + event.getNewEnd());
}
1 симпатия