6 Replies Latest reply on Dec 19, 2008 3:00 AM by Nicole Schweighardt

    a4j:support selectOneRadio rerendering not working

    Nicole Schweighardt Novice

      Hi,

      I want to use a <h:selectOneRadio> with a4j:support. If the value changes in the selectOneRadio, the <h:listbox id="groups...> should be rerendered.

      <h:selectOneRadio layout="pagedirection" value="#{appointmentBean.appointmentType}">
       <f:selectItem itemValue="#{appointmentBean.appointmentType_general}" itemLabel="fuer alle verfuegbar" />
       <f:selectItem itemValue="#{appointmentBean.appointmentType_group}" itemLabel="fuer Gruppe verfuegbar"/>
       <a4j:support event="onchange" reRender="groups" />
       </h:selectOneRadio>
      
       <h:selectOneListbox value="#{appointmentBean.relatedGroupId}" id="groups" rendered="#{appointmentBean.appointmentType_group}">
       <f:selectItems value="#{groupBean.allGroupsAsItems}"/>
       </h:selectOneListbox>


      If the value of the radiobutton is
      appointmentType_general
      the listbox should not be rendered because there is a rendering condition:
      <h:selectOneListbox value="#{appointmentBean.relatedGroupId}" id="groups" rendered="#{appointmentBean.appointmentType_group}">


      My first problem is that if I invoke the page at the first time, the selectOneRadio-Boxes are both unselected.
      But in my bean I initialized the values:
      ...
      ...appointmentType_general=true;
      ...appointmentType_group=false;
      ...


      The second problem is that if I change the value in the selectOneRadio the ajax request is fired. I can see in the debugger that in my bean the isAppointmentType_group() method is invoked and the values are set right. But on the page the listbox is not rendered.

      Here is my beancode:
      ...
       public void setAppointmentType(String appointmentType) {
       if(appointmentType.equals("appointmentType_general")){
       this.appointmentType_general=true;
       this.appointmentType_group=false;
       }
       else{
       this.appointmentType_general=false;
       this.appointmentType_group=true;
       }
       }
      public boolean isAppointmentType_general() {
       return appointmentType_general;
       }
      
       public void setAppointmentType_general(boolean appointmentType_general) {
       this.appointmentType_general = appointmentType_general;
       }
      
       public boolean isAppointmentType_group() {
       return appointmentType_group;
       }
      
       public void setAppointmentType_group(boolean appointmentType_group) {
       this.appointmentType_group = appointmentType_group;
       }
      ...


      Any ideas?
      Thanks, Nicki