1 Reply Latest reply on Apr 3, 2008 8:53 AM by Anton Belevich

    <rich:comboBox>: Backing bean value is lost after second ref

    Michael Abele Newbie

      Hi all,

      I want to use the new <rich:comboBox> for my application, but I'm facing some problems that the backing bean value is lost after the second refresh of an area ...

      I have the following example page:

      <h:form id="test">
       <rich:panel id="orderHead">
       <a4j:commandButton id="com" reRender="part" action="#{suggest.setProp2}" value="Refresh"/>
       <rich:panel id="part">
       <rich:comboBox value="#{suggest.property}">
       <f:selectItems value="#{suggest.comboSelectItems}" />
       </rich:comboBox>
       <h:outputText id="propOut" value="#{suggest.property}" /><br/>
       <h:outputText id="propOut2" value="#{suggest.property2}" /><br/>
       </rich:panel>
       </rich:panel>
      </h:form>
      

      With the following backing bean code:
      import java.util.Date;
      import javax.faces.model.SelectItem;
      
      /**
       * Test bean for rich:comboBox
       *
       */
      public class SuggestBean {
      
       // Property bind to the combo box
       private String property;
       // Property to verify re-rendering
       private String property2;
      
       private SelectItem[] comboSelectItems = { new SelectItem("Test", "Test"), new SelectItem("Test2", "Test2"), new SelectItem("Test3", "Test3") };
      
       /**
       * Updates property2 with current date.
       */
       public void updateProperty2() {
       // Only to verify the re-rendering is done
       setProperty2((new Date()).toString());
       }
      
       public String getProperty() {
       return property;
       }
      
       public void setProperty(String property) {
       this.property = property;
       }
      
       public String getProperty2() {
       return property2;
       }
      
       public void setProperty2(String property2) {
       this.property2 = property2;
       }
      
       public SelectItem[] getComboSelectItems() {
       return comboSelectItems;
       }
      
       public void setComboSelectItems(SelectItem[] comboSelectItems) {
       this.comboSelectItems = comboSelectItems;
       }
      
      }
      

      The bean has two properties, one is bound as value to the combo box, the other property is updated with the current date if updateProperty2() method is called.

      If I press the "refresh" button for the first time, everything is fine (poperty2 is updated with the current date, property 1 contains my comboBox selection). If I press the button again, the date is updated but the property value is removed (from comboBox and h:outputText!).

      Am I doing something wrong or is it a but? Unfortunately there is no example in the demo application where a backing bean value is bind to a combo box!

      Thanks & Regards
      Michael