2 Replies Latest reply on Jul 14, 2011 9:07 AM by ingoschi

    RF4 Component binding problem: RichFaces is not defined

    ingoschi

      Hi,

       

      I 'm converting a JSF 1.2 RichFaces 3.3.3 application to JSF 2.0 RichFaces 4.0.

      The application uses component binding to a great extent.

       

      I tried an example with a plain facelet with rich:calendar, which works, and with a facelet with component binding which produces javascript errors like "RichFaces is not defined" probably for RichFaces.ui.Calendar

       

      This is my test facelet

      <?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">
      <h:head>
          <title>test</title>
          <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />    
      </h:head>
      <body>
          <h:form id="form" binding="#{componentBindingCtrl.form}"/>
      </body>
      </html>
      

       

       

      This is my ManagedBean

      package bindingtest;
      
      import java.util.Date;
      import java.util.Locale;
      import java.util.TimeZone;
      
      import javax.el.ELContext;
      import javax.el.ExpressionFactory;
      import javax.faces.bean.ManagedBean;
      import javax.faces.bean.SessionScoped;
      import javax.faces.component.html.HtmlForm;
      import javax.faces.component.html.HtmlPanelGrid;
      import javax.faces.context.FacesContext;
      
      import org.richfaces.component.UICalendar;
      import org.richfaces.component.UIOutputPanel;
      
      @ManagedBean(name = "componentBindingCtrl")
      @SessionScoped
      public class ComponentBindingCtrl{
        
          private Date testDate = new Date();
          
          public Date getTestDate() {
              return testDate;
          }
      
          public void setTestDate(Date testDate) {
              this.testDate = testDate;
          }
      
          private HtmlForm form;
      
          public HtmlForm getForm() {
              return form;
          }
      
          public void setForm(final HtmlForm form) {
              this.form = form;
          }
      
          public ComponentBindingCtrl() {
              FacesContext facesContext = FacesContext.getCurrentInstance();
              ExpressionFactory expressionFactory = facesContext.getApplication()
                      .getExpressionFactory();
              ELContext elContext = facesContext.getELContext();
              
              form = new HtmlForm();        
             
              HtmlPanelGrid panelgrid = new HtmlPanelGrid();
              panelgrid.setColumns(1);
              panelgrid.setBorder(0);
              form.getChildren().add(panelgrid);   
              
              UIOutputPanel panel = new UIOutputPanel();
              panel.setId("panel");
              panelgrid.getChildren().add(panel);
              
              UICalendar calendar = new UICalendar();
              calendar.setValueExpression("value", expressionFactory.createValueExpression(elContext, "#{componentBindingCtrl.testDate}", Date.class));
              calendar.setEnableManualInput(true); 
              calendar.setRequired(false);
              calendar.setId("cal");       
              calendar.setTimeZone(TimeZone.getDefault());
              calendar.setLocale(Locale.getDefault());
              panel.getChildren().add(calendar);         
          }
      }
      

       

      Is there something obviously wrong?

       

      I added the whole maven project as attachment.

       

      Regards,

      Ingo