<p:schedule con <p:ajax event="viewChange">

Cuando deseamos lanzar eventos al presionar los botones siguiente, anterior, hoy de un <p:schedule>

El evento viewChange no se dispara directamente, en el siguiente enlace nos dan una soluciçon usando un script que debemos

  <script type="text/javascript">
        $('.fc-prev-button, .fc-next-button, .fc-today-button').on('click.schedule', function() {
       PF('myschedule').callBehavior('viewChange');
});
        </script>

  <p:schedule id="schedule"  
                                                
            showHeader="true"
            rightHeaderTemplate="month,agendaWeek,agendaDay,basicDay"
            value="#{scheduleBoletasJefeUnidadController.eventModel}"
            widgetVar="myschedule" timeZone="GMT-5" locale="es">
<p:ajax event="viewChange" listener="#{scheduleBoletasJefeUnidadController.onViewChange}"  update=":form:growl"  />
                                       
</p:schedule>



  <script type="text/javascript">
        $('.fc-prev-button, .fc-next-button, .fc-today-button').on('click.schedule', function() {
       PF('myschedule').callBehavior('viewChange');
});
        </script>

En el Controller

  public void onViewChange(SelectEvent selectEvent) {
        try {
            String view = selectEvent.getObject().toString();
          
            Schedule schedule = (Schedule) FacesContext.getCurrentInstance().getViewRoot().findComponent(":form:schedule");
            if (schedule == null) {
                System.out.println("------> es null es schedule..........");
            }

          
            AjaxBehaviorEvent behaviorEvent = (AjaxBehaviorEvent) selectEvent;


         
            ZoneId zoneId = CalendarUtils.calculateZoneId(schedule.getTimeZone());
            System.out.println("zoneId " + zoneId.toString());

Last updated