Alo gente sou novato com o primefaces e estou tentando implementar um Schedule do Primefaces.
Eu consigo colocar os dados do meu objecto para mostrar nos campos da data do meu schedule mas na hora de selecionar uma data ou abrir um dialog
o metodo onEventSelect contem um atributo event que sempre esta null e nao consigo apanhar o motivo.
Aqui esta o scheduleView
package mz.co.mpteventos.springsecurity.bean;
import java.io.Serializable;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
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 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 mz.co.mpteventos.springsecurity.dao.DAO;
import mz.co.mpteventos.springsecurity.model.Evento;
@ManagedBean
@ViewScoped
public class ScheduleView implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
private ScheduleModel eventModel;
private ScheduleEvent event = new DefaultScheduleEvent();
private Evento evento = new Evento();
private List<Evento> listaEventos;
@PostConstruct
public void init() {
listaEventos = new DAO<Evento>(Evento.class).listaTodos();
eventModel = new DefaultScheduleModel();
for(int i=0; i <= listaEventos.size() - 1; i++){
eventModel.addEvent(new DefaultScheduleEvent(listaEventos.get(i).getNomeEvento(), listaEventos.get(i).getDataEventoInicio().getTime(), listaEventos.get(i).getDataEventoFim().getTime()));
}
}
public ScheduleModel getEventModel() {
return eventModel;
}
public ScheduleEvent getEvent() {
return event;
}
public void setEvent(ScheduleEvent event) {
this.event = event;
}
public void addEvent(ActionEvent actionEvent) {
if(event.getId() == null) {
System.out.println("e nulo");
System.out.println("tamahno" + eventModel.getEvents().size());
eventModel.addEvent(event);
} else {
System.out.println("nao e nulo");
eventModel.updateEvent(event);
evento.setNomeEvento(event.getTitle());
Calendar cal = Calendar.getInstance();
cal.setTime(event.getStartDate());
evento.setDataEventoInicio(cal);
cal.setTime(event.getEndDate());
evento.setDataEventoInicio(cal);
new DAO<Evento>(Evento.class).atualiza(evento);
event = new DefaultScheduleEvent();
}
}
public void onEventSelect(SelectEvent selectEvent) {
event = (ScheduleEvent) selectEvent.getObject();
System.out.println("Entrou no metodo onEventSelect" + event.getTitle());
}
public void onDateSelect(SelectEvent selectEvent) {
event = new DefaultScheduleEvent("", (Date) selectEvent.getObject(), (Date) selectEvent.getObject());
}
public void onEventMove(ScheduleEntryMoveEvent event) {
FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, "Evento movido", "Day delta:" + event.getDayDelta() + ", Minute delta:" + event.getMinuteDelta());
addMessage(message);
}
public void onEventResize(ScheduleEntryResizeEvent event) {
FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, "Evento ajustado", "Day delta:" + event.getDayDelta() + ", Minute delta:" + event.getMinuteDelta());
addMessage(message);
}
private void addMessage(FacesMessage message) {
FacesContext.getCurrentInstance().addMessage(null, message);
}
// getters & setters
public Evento getEvento() {
return evento;
}
public List<Evento> getListaEventos() {
return listaEventos;
}
public void setEventModel(ScheduleModel eventModel) {
this.eventModel = eventModel;
}
public void setEvento(Evento evento) {
this.evento = evento;
}
public void setListaEventos(List<Evento> listaEventos) {
this.listaEventos = listaEventos;
}
}
MEU XHTML
<?xml version="1.0" encoding="UTF-8" ?>
<!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://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui">
<ui:composition template="_template.xhtml">
<ui:define name="titulo">
<h1>Cronograma de Eventos</h1>
</ui:define>
<ui:define name="conteudo" style="horizontal-align:center" >
<h:form id="formulario" enctype = "multipart/form-data" style="horizontal-align:center" >
<p:messages id="messages" autoUpdate="true" />
<p:fieldset legend="Cronograma de Eventos" style="horizontal-align:center" >
<h:panelGrid style="horizontal-align:center">
<h3 style="margin-top: 0">Calendário de Eventos</h3>
<p:schedule id="schedule" value="#{scheduleView.eventModel}" widgetVar="myschedule" timeZone="GMT+2" locale="pt">
<p:ajax event="dateSelect" listener="#{scheduleView.onDateSelect}" update="eventDetails" oncomplete="PF('eventDialog').show();" />
<p:ajax event="eventSelect" listener="#{scheduleView.onEventSelect}" update="eventDetails" oncomplete="PF('eventDialog').show();" />
<p:ajax event="eventMove" listener="#{scheduleView.onEventMove}" update="messages" />
<p:ajax event="eventResize" listener="#{scheduleView.onEventResize}" update="messages" />
</p:schedule>
</h:panelGrid>
<p:dialog widgetVar="eventDialog" header="Datalhes do evento" showEffect="clip" hideEffect="clip">
<h:panelGrid id="eventDetails" columns="2">
<p:outputLabel for="title" value="Titulo:" />
<p:inputText id="title" value="#{scheduleView.event.title}" required="true" />
<p:outputLabel for="from" value="De:" />
<p:calendar id="from" value="#{scheduleView.event.startDate}" timeZone="GMT+2" pattern="dd/MM/yyyy HH:mm"/>
<p:outputLabel for="to" value="Para:" />
<p:calendar id="to" value="#{scheduleView.event.endDate}" timeZone="GMT+2" pattern="dd/MM/yyyy HH:mm"/>
<p:outputLabel for="allDay" value="Todo Dia:" />
<h:selectBooleanCheckbox id="allDay" value="#{scheduleView.event.allDay}" />
<p:commandButton type="reset" value="Limpar" />
<p:commandButton id="addButton" value="Gravar" actionListener="#{scheduleView.addEvent}" oncomplete="PF('myschedule').update();PF('eventDialog').hide();" />
</h:panelGrid>
</p:dialog>
</p:fieldset>
</h:form>
<script type="text/javascript">
PrimeFaces.locales['pt'] = {
closeText: 'kapat',
prevText: 'Anterior',
nextText: 'As seguir',
currentText: 'Data Actual',
monthNames: ['Janeiro','Fevereiro','Março','Abril','Maio','Junho',
'Julho','Agosto','Setembro','Outubro','Novembro','Dezembro'],
monthNamesShort: ['Jan','Fev','Mar','Abr','Mai','Jun',
'Jul','Ago','Set','Out','Nov','Dez'],
dayNames: ['Segunda','Terça','Quarta','Quinta','Sexta','Sabado','Domingo'],
dayNamesShort: ['Seg','Ter','Qua','Qui','Sex','Sab','Dom'],
dayNamesMin: ['Segunda','Ter','Qua','Qui','Sex','Sab','Dom'],
weekHeader: 'Hf',
firstDay: 1,
isRTL: false,
showMonthAfterYear: false,
yearSuffix: '',
month: 'Mês',
week: 'Semana',
day: 'Dia',
allDayText : 'Todo Dia'
};
</script>
<style type="text/css">
.value {
width: 1000px;
}
</style>
</ui:define>
</ui:composition>
</html>