I have big issues with Primefaces component schedule. When I want to create events, the dialog window opens up, and I can enter information about a new event. But when I submit, the schedule doesn't display the event which has been just created. I can't find any solution.
Please Help
Code: Select all
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui">
<h:head>
<link type="text/css" rel="stylesheet" href="DATA/CSS/canevas.css" />
</h:head>
<h:body>
<h:form>
<p:growl id="messages" showDetail="true" />
<p:schedule id="schedule" value="#{scheduleBean.model}" widgetVar="myschedule" editable="true" view="agendaWeek"
showWeekends="false" allDaySlot="false" slotMinutes="60" firstHour="7" timeZone="GMT+2">
<p:ajax event="dateSelect" listener="#{scheduleBean.onDateSelect}" update="eventDetails" oncomplete="PF('eventDialog').show();" />
<p:ajax event="eventSelect" listener="#{scheduleBean.onEventSelect}" update="eventDetails" oncomplete="PF('eventDialog').show();" />
<p:ajax event="eventMove" listener="#{scheduleBean.onEventMove}" update="messages" />
<p:ajax event="eventResize" listener="#{scheduleBean.onEventResize}" update="messages" />
</p:schedule>
<p:dialog widgetVar="eventDialog" header="Event Details" showEffect="clip" hideEffect="clip">
<h:panelGrid id="eventDetails" columns="2">
<h:outputLabel for="title" value="Title:" />
<p:inputText id="title" value="#{scheduleBean.event.title}" required="true" />
<h:outputLabel for="from" value="From:" />
<p:inputMask id="from" value="#{scheduleBean.event.startDate}" mask="99/99/9999">
<f:convertDateTime pattern="dd/MM/yyyy" timeZone="GMT+2"/>
</p:inputMask>
<h:outputLabel for="to" value="To:" />
<p:inputMask id="to" value="#{scheduleBean.event.endDate}" mask="99/99/9999">
<f:convertDateTime pattern="dd/MM/yyyy" timeZone="GMT+2"/>
</p:inputMask>
<p:commandButton type="reset" value="Reset" />
<p:commandButton id="addButton" value="Save" actionlistener="#{scheduleBean.addEvent}" oncomplete="PF('myschedule').update();PF('eventDialog').hide();" />
</h:panelGrid>
</p:dialog>
</h:form>
</h:body>
</html>
Code: Select all
package bean.session;
import java.io.Serializable;
import java.util.Calendar;
import java.util.Date;
import javax.annotation.PostConstruct;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import model.SeanceModel;
import model.SessionModel;
import org.primefaces.event.ScheduleEntryMoveEvent;
import org.primefaces.event.ScheduleEntryResizeEvent;
import org.primefaces.event.SelectEvent;
import org.primefaces.model.DefaultScheduleEvent;
import org.primefaces.model.DefaultScheduleModel;
import org.primefaces.model.ScheduleEvent;
import org.primefaces.model.ScheduleModel;
import dao.DAOFactory;
@ManagedBean(name="scheduleBean")
@ViewScoped
public class ScheduleBean implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
private ScheduleModel model;
private ScheduleEvent event = new DefaultScheduleEvent();
private SessionModel sessionModel = DAOFactory.getSessionDAO().find(1);
private SeanceModel seanceModel = new SeanceModel();
public ScheduleModel getModel() {
return model;
}
public void setModel(ScheduleModel model) {
this.model = model;
}
public ScheduleEvent getEvent() {
return event;
}
public void setEvent(ScheduleEvent event) {
this.event = event;
}
public void addEvent(ActionEvent actionEvent) {
if(event.getId() == null){
model.addEvent(event);
}else{
model.updateEvent(event);
}
event = new DefaultScheduleEvent();
}
public void onEventMove(ScheduleEntryMoveEvent event) {
FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, "Event moved", "Day delta:" + event.getDayDelta() + ", Minute delta:" + event.getMinuteDelta());
addMessage(message);
}
public void onEventResize(ScheduleEntryResizeEvent event) {
FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, "Event resized", "Day delta:" + event.getDayDelta() + ", Minute delta:" + event.getMinuteDelta());
addMessage(message);
}
private void addMessage(FacesMessage message) {
FacesContext.getCurrentInstance().addMessage(null, message);
}
public String doPlanifierSession() {
this.sessionModel = DAOFactory.getSessionDAO().create(this.sessionModel);
return "agendaSession";
}
public void onEventSelect(SelectEvent e) {
event = (ScheduleEvent) e.getObject();
}
public void onDateSelect(SelectEvent e) {
event = new DefaultScheduleEvent("", (Date) e.getObject(), (Date) e.getObject());
}
public SessionModel getSessionModel() {
return sessionModel;
}
public void setSessionModel(SessionModel sessionModel) {
this.sessionModel = sessionModel;
}
public SeanceModel getSeanceModel() {
return seanceModel;
}
public void setSeanceModel(SeanceModel seanceModel) {
this.seanceModel = seanceModel;
}
}