Scheduler dateSelectListener problem

UI Components for JSF
Post Reply
marciodemendonca
Posts: 3
Joined: 22 Jul 2010, 02:54

22 Jul 2010, 17:30

Hi to all.

I am having a problem using the primefaces schedule component. It appears to work just fine, I can show it in different browser, resize event already inserted etc. The problem is when I try to add a new event. When I click to add an event, I get org.apache.jasper.el.JspMethodNotFoundException saying that '#{agendaHandler.onDateSelect}' Method not found: AgendaHandler@3f377.onDateSelect(org.primefaces.event.ScheduleDateSelectEvent). This is strange because the method in the controller class receive an instance of org.primefaces.event.DateSelectEvent not the one mentioned in the error. If I change the parameter to org.primefaces.event.ScheduleDateSelectEvent, I get a new error Type mismatch.
I was using the primefaces 1.0.2, but then I changed to the 1.1 RC1 and I still get the same error.
This is very strange because my code is exactly the same of the schedule showcase.

Here is my Controller class

Code: Select all


import java.util.Calendar;
import java.util.Date;

import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;

import org.primefaces.event.DateSelectEvent;
import org.primefaces.event.ScheduleEntryMoveEvent;
import org.primefaces.event.ScheduleEntryResizeEvent;
import org.primefaces.event.ScheduleEntrySelectEvent;
import org.primefaces.model.DefaultScheduleEvent;

import org.primefaces.model.DefaultScheduleModel;
import org.primefaces.model.ScheduleEvent;
import org.primefaces.model.ScheduleModel;



public class AgendaHandler {
	private ScheduleModel eventModel;

	private ScheduleModel lazyEventModel;

	private ScheduleEvent event = new DefaultScheduleEvent();

	private String theme;

	public AgendaHandler() {
		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()));

	}

	public Date getRandomDate(Date base) {
		Calendar date = Calendar.getInstance();
		date.setTime(base);
		date.add(Calendar.DATE, ((int) (Math.random() * 30)) + 1); // set random
		// day of
		// month

		return date.getTime();
	}

	public Date getInitialDate() {
		Calendar calendar = Calendar.getInstance();
		calendar.set(calendar.get(Calendar.YEAR), Calendar.FEBRUARY, calendar
				.get(Calendar.DATE), 0, 0, 0);

		return calendar.getTime();
	}

	public ScheduleModel getEventModel() {
		return eventModel;
	}

	public ScheduleModel getLazyEventModel() {
		return lazyEventModel;
	}

	private Calendar today() {
		Calendar calendar = Calendar.getInstance();
		calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH),
				calendar.get(Calendar.DATE), 0, 0, 0);

		return calendar;
	}

	private Date previousDay8Pm() {
		Calendar t = (Calendar) today().clone();
		t.set(Calendar.AM_PM, Calendar.PM);
		t.set(Calendar.DATE, t.get(Calendar.DATE) - 1);
		t.set(Calendar.HOUR, 8);

		return t.getTime();
	}

	private Date previousDay11Pm() {
		Calendar t = (Calendar) today().clone();
		t.set(Calendar.AM_PM, Calendar.PM);
		t.set(Calendar.DATE, t.get(Calendar.DATE) - 1);
		t.set(Calendar.HOUR, 11);

		return t.getTime();
	}

	private Date today1Pm() {
		Calendar t = (Calendar) today().clone();
		t.set(Calendar.AM_PM, Calendar.PM);
		t.set(Calendar.HOUR, 1);

		return t.getTime();
	}

	private Date theDayAfter3Pm() {
		Calendar t = (Calendar) today().clone();
		t.set(Calendar.DATE, t.get(Calendar.DATE) + 2);
		t.set(Calendar.AM_PM, Calendar.PM);
		t.set(Calendar.HOUR, 3);

		return t.getTime();
	}

	private Date today6Pm() {
		Calendar t = (Calendar) today().clone();
		t.set(Calendar.AM_PM, Calendar.PM);
		t.set(Calendar.HOUR, 6);

		return t.getTime();
	}

	private Date nextDay9Am() {
		Calendar t = (Calendar) today().clone();
		t.set(Calendar.AM_PM, Calendar.AM);
		t.set(Calendar.DATE, t.get(Calendar.DATE) + 1);
		t.set(Calendar.HOUR, 9);

		return t.getTime();
	}

	private Date nextDay11Am() {
		Calendar t = (Calendar) today().clone();
		t.set(Calendar.AM_PM, Calendar.AM);
		t.set(Calendar.DATE, t.get(Calendar.DATE) + 1);
		t.set(Calendar.HOUR, 11);

		return t.getTime();
	}

	private Date fourDaysLater3pm() {
		Calendar t = (Calendar) today().clone();
		t.set(Calendar.AM_PM, Calendar.PM);
		t.set(Calendar.DATE, t.get(Calendar.DATE) + 4);
		t.set(Calendar.HOUR, 3);

		return t.getTime();
	}

	public ScheduleEvent getEvent() {
		return event;
	}

	public void setEvent(ScheduleEvent event) {
		this.event = event;
	}

	public void addEvent(ActionEvent actionEvent) {
		if (event.getId() == null)
			eventModel.addEvent(event);
		else
			eventModel.updateEvent(event);

		event = new DefaultScheduleEvent();
	}

	public void onEventSelect(ScheduleEntrySelectEvent selectEvent) {
		event = selectEvent.getScheduleEvent();
	}

	public void teste(DateSelectEvent selectEvent) {
		event = new DefaultScheduleEvent(Math.random() + "", selectEvent
				.getDate(), selectEvent.getDate());
	}

	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 getTheme() {
		return theme;
	}

	public void setTheme(String theme) {
		this.theme = theme;
	}

}
And Here is my .jsp class

Code: Select all

<%@page contentType="text/html" pageEncoding="UTF-8"%>

<%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
<%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
<%@ taglib uri="http://primefaces.prime.com.tr/ui" prefix="p"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">

<%--
    This file is an entry point for JavaServer Faces application.
--%>
<html>
<f:view>

	<head>

	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

	<title>Odontologia Paula de Mendonça</title>
	<p:resources />
	</head>
	<body>
	<div id="wrapper"><!-- start header --> <!-- end header --> <!-- start page -->
	<div id="page"><h:form>




		<div id="content"><h:panelGroup id="grupoInfo">
			<div id="panelConfirmacao" align="center"><h:messages
				id="confirmacao" errorClass="erroConfirmacao"
				infoClass="sucessoConfirmacao" layout="table" showSummary="true"
				showDetail="false" globalOnly="true"></h:messages></div>
		</h:panelGroup> <p:ajaxStatus style="height:24px;display:block;">
			<f:facet name="start">
				<h:graphicImage value="../design/ajaxloading.gif" />
			</f:facet>

			<f:facet name="complete">
				<h:outputText value="" />
			</f:facet>
		</p:ajaxStatus> <p:growl id="messages" showDetail="true" /> <p:schedule
			value="#{agendaHandler.eventModel}" editable="true" locale="en"
			widgetVar="myschedule" id="teste"
			dateSelectListener="#{agendaHandler.teste}"
			eventSelectListener="#{agendaHandler.onEventSelect}"
			eventMoveListener="#{agendaHandler.onEventMove}"
			eventResizeListener="#{agendaHandler.onEventResize}"
			onEventMoveUpdate="messages" onEventResizeUpdate="messages">

			<p:scheduleEventDialog header="Event Details">
				<h:panelGrid columns="2">
					<h:outputLabel for="title" value="Title:" />
					<h:inputText id="title" value="#{agendaHandler.event.title}"
						required="true" />

					<h:outputLabel for="from" value="From:" />
					<p:inputMask id="from" value="#{agendaHandler.event.startDate}"
						mask="99/99/9999">
						<f:convertDateTime pattern="dd/MM/yyyy" />
					</p:inputMask>

					<h:outputLabel for="to" value="To:" />
					<p:inputMask id="to" value="#{agendaHandler.event.endDate}"
						mask="99/99/9999">
						<f:convertDateTime pattern="dd/MM/yyyy" />
					</p:inputMask>

					<h:outputLabel for="allDay" value="All Day:" />
					<h:selectBooleanCheckbox id="allDay"
						value="#{agendaHandler.event.allDay}" />

					<p:commandButton type="reset" value="Reset" />
					<p:commandButton value="Save"
						actionListener="#{agendaHandler.addEvent}"
						oncomplete="myschedule.update();" />
				</h:panelGrid>
			</p:scheduleEventDialog>
		</p:schedule></div>
		<!-- end sidebars -->
		<div style="clear: both;">&nbsp;</div>

	</h:form></div>
	<!-- end page --></div>
	<div id="footer"></div>
	</body>

</f:view>
</html>


My AgendaHandler bean definition

Code: Select all

<managed-bean>
		<managed-bean-name>agendaHandler</managed-bean-name>
		<managed-bean-class>AgendaHandler</managed-bean-class>
		<managed-bean-scope>session</managed-bean-scope>
	</managed-bean>

The error description

Code: Select all

WARNING: /agenda.jsp(44,62) '#{agendaHandler.onDateSelect}' Method not found: AgendaHandler@3f377.onDateSelect(org.primefaces.event.ScheduleDateSelectEvent)
org.apache.jasper.el.JspMethodNotFoundException: /agenda.jsp(44,62) '#{agendaHandler.onDateSelect}' Method not found: AgendaHandler@3f377.onDateSelect(org.primefaces.event.ScheduleDateSelectEvent)
	at org.apache.jasper.el.JspMethodExpression.invoke(JspMethodExpression.java:71)
	at org.primefaces.component.schedule.Schedule.broadcast(Schedule.java:438)
	at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:444)
	at javax.faces.component.UIViewRoot.processDecodes(UIViewRoot.java:541)
	at com.sun.faces.lifecycle.ApplyRequestValuesPhase.execute(ApplyRequestValuesPhase.java:78)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
	at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:265)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
	at java.lang.Thread.run(Unknown Source)
22/07/2010 12:17:36 com.sun.faces.lifecycle.Phase doPhase
SEVERE: JSF1054: (Phase ID: APPLY_REQUEST_VALUES 2, View ID: /agenda.jsp) Exception thrown during phase execution: javax.faces.event.PhaseEvent[source=com.sun.faces.lifecycle.LifecycleImpl@16535bf]
22/07/2010 12:17:36 org.apache.catalina.core.StandardWrapperValve invoke


cagatay.civici
Prime
Posts: 18616
Joined: 05 Jan 2009, 00:21
Location: Cybertron
Contact:

22 Jul 2010, 17:42

Hi Marcio,

It is fixed just today, please see;

http://code.google.com/p/primefaces/iss ... il?id=1020

marciodemendonca
Posts: 3
Joined: 22 Jul 2010, 02:54

22 Jul 2010, 19:33

Thank you.
where can I get the new .jar file with the fix schedule?

cagatay.civici
Prime
Posts: 18616
Joined: 05 Jan 2009, 00:21
Location: Cybertron
Contact:

22 Jul 2010, 20:40

You can use tomorrow's nightly build or wait for the next week's release.

Post Reply

Return to “PrimeFaces”

  • Information
  • Who is online

    Users browsing this forum: No registered users and 41 guests