1

Iam using the below tag for schedule calendar

<p:schedule id="schedule" value="#{scheduleController.eventModel}" widgetVar="myschedule">  

the problem here is the schedules are getting displayed only if i initialize this eventModel in the constructor...if i initialize in some method other than constructor its not working... can anyone help..

here eventModel code same as primefaces show case like

eventModel = new DefaultScheduleModel();  
    eventModel.addEvent(new DefaultScheduleEvent("Champions League Match", previousDay8Pm(), previousDay11Pm()));  
    eventModel.addEvent(new DefaultScheduleEvent("Birthday Party", today1Pm(), today6Pm()));  
    eventModel.addEvent(new DefaultScheduleEvent("Breakfast at Tiffanys", nextDay9Am(), nextDay11Am()));  
    eventModel.addEvent(new DefaultScheduleEvent("Plant the new garden stuff", theDayAfter3Pm(), fourDaysLater3pm()));  
Kranthi Sama
  • 498
  • 3
  • 10
  • 28
  • What is 'some method'? Is is a method you invoke? When did you invoke 'some method'? Did you update your `schedule` element after initializing the calendar? – Manuel Dec 12 '13 at 09:14
  • scheduleController.eventModel should be initialized (non null), so I think is better to do it in @PostConstruct. Eventually, if you want to reinitialize it in a method, that's fine. – Ioan Dec 12 '13 at 09:17
  • What scope does your bean have? Which PF version? Any browser console errors while rendering the page? – Manuel Dec 12 '13 at 10:01
  • my controller is @ViewScoped annotated.am using PF 4.0 version and my console is not having any errors.. – Kranthi Sama Dec 12 '13 at 10:03
  • Then add some [SSCCE](http://sscce.org/). – Manuel Dec 12 '13 at 10:15

1 Answers1

0

You can initialize your calendar in the PostConstruct method. This method will be invoked directly after the class' constructor was called and all @ManagedPropertys are set 1.

public class ScheduleController {

  @ManagedProperty
  private UserBean userBean; // + setter

  private ScheduleModel eventModel; // + getter

  private ScheduleController() {
    // do nothing here
  }

  @PostConstruct
  private void init() {
    eventModel = new DefaultScheduleModel();

    if (userBean.hasPermission("something")) {
      eventModel.addEvent(new DefaultScheduleEvent("one", date1, date2));
      eventModel.addEvent(new DefaultScheduleEvent("two", date2, date3));
    } else {
      eventModel.addEvent(new DefaultScheduleEvent("three", date4, date5));
      eventModel.addEvent(new DefaultScheduleEvent("four", date5, date6));
    }
  }

}
Community
  • 1
  • 1
Manuel
  • 3,828
  • 6
  • 33
  • 48
  • Its not working. Moreover I cannot use postconstruct because the schedule needs to be changed dynamically based on the logged in user... – Kranthi Sama Dec 12 '13 at 09:47
  • 1. Elaborate 'Its not working'? What happens, what gets rendered? 2. How do you fetch the current logged in user? By some bean? Inject that bean into your `ScheduleController` as `@ManagedProperty` and there you've got your user. – Manuel Dec 12 '13 at 09:53
  • 1)Nothing is getting rendered..just blank...@postconstruct will be loaded at startup time how can i get user info at that time eventhough i inject my bean into controller. – Kranthi Sama Dec 12 '13 at 09:55