0 Replies Latest reply on Jan 26, 2009 1:00 PM by Clair Graham

    unable to invoke/call backing bean from rich:calendar

    Clair Graham Newbie

      I am unable to trigger a backing bean method from the rich:calendar widget. I have tried using backing bean methods changeSelectedDate, changeSelectD, and changeDateValue. I have used rich:calendar attributes: currentDateChangeListener="#{calendarBean.changeSelectedDate}" and valueChangeListener="#{calendarBean.changeDateValue}">
      in different combinations with no success.

      I have the following page and backing bean code:

      snippet of page code:
      <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
      <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
      <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
      <%@ taglib uri="http://richfaces.org/a4j" prefix="a4j"%>
      <%@ taglib uri="http://richfaces.org/rich" prefix="rich"%>
      
      
      <html>
       <f:view>
       <f:loadBundle basename="com.ipi.InformationPortal.util.prompts" var="prompts"/>
       <head>
       <title><h:outputText value="#{prompts.formTitle}"/></title>
       <link href="css/mdpMaster.css" rel="stylesheet" type="text/css" />
       </head>
       <body>
       <%@include file="inc/ip_header.jsp" %>
       <div id="mdpContainer">
       <h:panelGrid id="Calpanel" columns="3" width="50%" >
       <a4j:outputPanel id="calendar" layout="block">
       <rich:calendar value="#{calendarBean.selectedDate}"
       locale="#{calendarBean.locale}"
       popup="#{calendarBean.popup}"
       datePattern="#{calendarBean.pattern}"
       showApplyButton="#{calendarBean.showApply}"
       valueChangeListener="#{calendarBean.changeDateValue}">
       <a4j:support event="oncurrentdateselected" action="#{calendarBean.changeDateValue}"/>
       <a4j:support event="ondateselected" action="#{calendarBean.changeSelectedDate}"/>
      
       </rich:calendar>
       </a4j:outputPanel>
       </h:panelGrid>
       </div> <!-- end #container -->
       <%@include file="inc/ip_footer.jsp" %>
       </body>
       </f:view>
      </html>
      
      Backing Bean code:
      
      import org.richfaces.event.CurrentDateChangeEvent;
      import java.util.Date;
      import java.util.Locale;
      import javax.faces.event.ValueChangeEvent;
      
      public class CalendarBean {
      String defaultLocale = "en, US";
      Boolean enableManualInput = false;
      Locale locale = new Locale(defaultLocale);
      String pattern = "yyyy-MM-dd";
      Boolean popup = true;
      Date selectedDate = DateUtils.getPreviousDate();
      Boolean showInput = true;
      Boolean showApply = false;
      
      public void changeSelectedDate(CurrentDateChangeEvent event) {
       System.out.print("CalendarBean::changeSelectedDate --> called "+event);
       //return "Go figure";
      }
      
      public void changeSelectedD() {
       System.out.print("CalendarBean::changeSelectedD --> called ");
       //return "Go figure";
      }
      
      public void changeDateValue(ValueChangeEvent event) {
       System.out.print("CalendarBean::changeDateValue --> called ");
      }
      
      public Boolean getEnableManualInput() {
       return enableManualInput;
      }
      
      public void setEnableManualInput(Boolean enableManualInput) {
       this.enableManualInput = enableManualInput;
      }
      
      public Locale getLocale() {
       return locale;
      }
      
      public void setLocale(Locale locale) {
       this.locale = locale;
      }
      
      public String getPattern() {
       return pattern;
      }
      
      public void setPattern(String pattern) {
       this.pattern = pattern;
      }
      
      public Boolean getPopup() {
       return popup;
      }
      
      public void setPopup(Boolean popup) {
       this.popup = popup;
      }
      
      public Date getSelectedDate() {
       return selectedDate;
      }
      
      public void setSelectedDate(Date selectedDate) {
       this.selectedDate = selectedDate;
      }
      
      public Boolean getShowApply() {
       return showApply;
      }
      
      public void setShowApply(Boolean showApply) {
       this.showApply = showApply;
      }
      
      public Boolean getShowInput() {
       return showInput;
      }
      
      public void setShowInput(Boolean showInput) {
       this.showInput = showInput;
      }
      
      public void valueChanged(ValueChangeEvent event) {
       System.out.println("CalendarBean::valueChanged was called -->> WOW"+event);
      }
      }
      
      



      In an attempt to see if the a4j:support event is being triggered i used the following:
      <a4j:outputPanel id="calendar" layout="block">
       <rich:calendar value="#{calendarBean.selectedDate}"
       locale="#{calendarBean.locale}"
       popup="#{calendarBean.popup}"
       datePattern="#{calendarBean.pattern}"
       showApplyButton="#{calendarBean.showApply}"
       valueChangeListener="#{calendarBean.changeDateValue}">
       <a4j:support event="onchanged" action="alert('Value succesfully stored')"/>
       </rich:calendar>
       </a4j:outputPanel>
      


      I don't get an alert window.

      I am using richfaces version 3.3.0GA. What am I missing??