6 Replies Latest reply on Oct 20, 2011 7:27 AM by ozorin

    Problems with rendering HTML page

    ozorin

      Hi,

      I use Richfaces 4.0.0 Final, Mojarra 2.1.2, and following problem:

      When the programmatically generate a JSF Form (HtmlForm) that contains the UITabPanel, when reload HTML pages do not include all Richfaces javascript libraries in <head> (as a result of tabs are not rendered). The JSF Form itself was created when the first call (page is rendered normally) and stored in the session bean.

       

      Bean:

       

      public class DynamicApplicationBuilder implements Serializable {
          private static final long serialVersionUID = 1L;
          private String formId;
          private DynamicForm dynamicFormObject;
          private HtmlForm dynamicFormView;
      
          ...
      
          private void generatedApplicationForm() {
              ...
      
              FacesContext facesContext = FacesContext.getCurrentInstance();
              Application application = facesContext.getApplication();
              dynamicFormView = (HtmlForm) application.createComponent(facesContext,
                      HtmlForm.COMPONENT_TYPE, "javax.faces.Form");
              UITabPanel tabPanel = (UITabPanel) application.createComponent(
                      facesContext, UITabPanel.COMPONENT_TYPE,
                      "org.richfaces.TabPanelRenderer");
              tabPanel.setSwitchType(SwitchType.ajax);
              for (int indexTab = 0; indexTab < dynamicFormObject.getFormContent().size(); indexTab++) {
                   UITab tab = (UITab) application.createComponent(facesContext,
                          UITab.COMPONENT_TYPE, "org.richfaces.TabRenderer");
                     
                     ...
                   tabPanel.getChildren().add(tab);
              }
              dynamicFormView.getChildren().add(tabPanel);
      
              HtmlCommandButton comBut = (HtmlCommandButton) application
                      .createComponent(facesContext,
                              HtmlCommandButton.COMPONENT_TYPE, "javax.faces.Button");
              comBut.setValue("-Send-");
              comBut.setActionExpression(JSFUtil.createAction("#{dynamicApplicationBuilder.testField}", String.class));
              dynamicFormView.getChildren().add(comBut);
          }
      
      ...
      
          public HtmlForm getDynamicFormView() {
              if (dynamicFormView == null) {
                 generatedApplicationForm();
              }
              return dynamicFormView;
          }
      
          public void setDynamicFormView(HtmlForm dynamicFormView) {
              this.dynamicFormView = dynamicFormView;
          }
      }
      

       

      XHTML page:

       

      <!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
          "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
      <ui:composition xmlns="http://www.w3.org/1999/xhtml"
          xmlns:f="http://java.sun.com/jsf/core"
          xmlns:h="http://java.sun.com/jsf/html"
          xmlns:ui="http://java.sun.com/jsf/facelets"
          template="/layout/lo_template.xhtml">
      
          ...
      
          <ui:define name="mainContent">
              <h:form id="formDAB" binding="#{dynamicApplicationBuilder.dynamicFormView}"  />
          </ui:define>
      </ui:composition>
      

       

      Any ideas?