I believe you have the setHardwareType method, which will be called after the 
valueChangeListener method causes values to be overwritten to  null or previous 
values. This sequence is part of jsf life cycle. You can put a break 
point/println's in the hardwareTypeChanged and setHardwareType you will know 
the sequence. One way to avoid this overwritting is have empty setHardwareType  
method ( do nothing in that) , have getHardwareType to read the values and use 
valueChangeListener method (hardwareTypeChanged) to update the HardwareType.
You do not need immediate="true" / facesContext.renderResponse().

hope that helps. 
-Sreeni. 

-----Original Message-----
From: Bruno Aranda [mailto:[EMAIL PROTECTED]
Sent: Tuesday, June 13, 2006 1:37 PM
To: MyFaces Discussion
Subject: Re: Conditionally rendered fields not retaing values


Does it work if you remove the immediate="true" attribute from the
selectOneRadio (see this docs to see if you really need it [1]), and
remove the facesContext.renderResponse() line (not needed).

Let's see!

Bruno

[1] http://wiki.apache.org/myfaces/How_The_Immediate_Attribute_Works

On 6/13/06, Meghana <[EMAIL PROTECTED]> wrote:
> I am sorry I should have included my code snippet before itself.
> Here we go!
>
>             <h:outputText value="#{Message.hardware_type}" />
>             <h:selectOneRadio value="#{ServiceBean.hardwareType}"
> onclick="submit()" immediate="true"
> valueChangeListener="#{ServiceBean.hardwareTypeChanged}">
>                 <f:selectItems value="#{ServiceBean.HWTypes}"/>
>             </h:selectOneRadio>
>
> public void hardwareTypeChanged(ValueChangeEvent event)
> throws SQLException, Exception{
>         FacesContext context = FacesContext.getCurrentInstance();
>         String prevCategorySelected = (String)event.getOldValue();
>         String newCategorySelected = (String)event.getNewValue();
>
> if(!newCategorySelected.equalsIgnoreCase(prevCategorySelected)){
>             // Value changed. Change the drop down values.
>              if(newCategorySelected.equals("Desktop")){
>                 desktopSelected = true;
>                 debug("Setting desktopSelected field to:
> "+isDesktopSelected());
>             }
>             else if(newCategorySelected.equals("Laptop")){
>                 laptopSelected = true;
>                 debug("Setting laptopSelected field to:
> "+isLaptopSelected()+" Laptop Type: "+laptopType);
>             }
>             context.renderResponse();
>              }
>         }
>  }
>
> Based on what  hardware type is selected Desktop items/laptop items are
> displayed.
> The code for that is
> <h:outputText value="#{Message.desktop_type}"
> rendered="#{ServiceBean.desktopSelected}"/>
>             <h:panelGroup rendered="#{ServiceBean.desktopSelected}">
>                 <h:selectOneRadio value="#{ServiceBean.desktopType}"
> id="desktop_type">
>                     <f:selectItem itemValue="Standard User Desktop"
> itemLabel="Standard User Desktop" />
>                     <f:selectItem itemValue="Non User Desktop"
> itemLabel="Non User Desktop" />
>                 </h:selectOneRadio>
>                 <h:message styleClass="error" for="desktop_type"/>
>             </h:panelGroup>
>             <h:outputText value="#{Message.laptop_type}"
> rendered="#{ServiceBean.laptopSelected}"/>
>             <h:panelGroup rendered="#{ServiceBean.laptopSelected}">
>                 <h:selectOneRadio value="#{ServiceBean.laptopType}"
> id="laptop_type">
>                     <f:selectItem itemValue="Standard User Laptop"
> itemLabel="Standard User Laptop" />
>                     <f:selectItem itemValue="Power User Laptop"
> itemLabel="Power User Laptop" />
>                 </h:selectOneRadio>
>                 <h:message styleClass="error" for="laptop_type"/>
>             </h:panelGroup>
>             <h:outputText value="#{Message.docking_station}"
> rendered="#{ServiceBean.laptopSelected}"/>
>             <h:panelGroup rendered="#{ServiceBean.laptopSelected}">
>                 <h:selectOneRadio value="#{ServiceBean.dockingStation}"
> id="docking_station">
>                     <f:selectItem itemValue="Yes" itemLabel="Yes" />
>                     <f:selectItem itemValue="No" itemLabel="No" />
>                 </h:selectOneRadio>
>                 <h:message styleClass="error" for="docking_station"/>
>             </h:panelGroup>
>             <h:outputText value="#{Message.wireless_access}"
> rendered="#{ServiceBean.laptopSelected}"/>
>             <h:panelGroup rendered="#{ServiceBean.laptopSelected}">
>                 <h:selectOneRadio value="#{ServiceBean.wirelessAccess}"
> id="wireless_access">
>                     <f:selectItem itemValue="Yes" itemLabel="Yes" />
>                     <f:selectItem itemValue="No" itemLabel="No" />
>                 </h:selectOneRadio>
>                 <h:message styleClass="error" for="wireless_access"/>
>             </h:panelGroup>
>
>
>
> Bruno Aranda <[EMAIL PROTECTED]> wrote:
>
>  And what about the "immediate" attributes? Are you using them? Can you
> show an snippet of your code?
>
> Bruno
>
> On 6/13/06, Meghana wrote:
> > Its already in session scope :-(
> >
> >
> > Bruno Aranda wrote:
> >
> > Could you try if that works if your bean is in session scope?
> >
> > Bruno
> >
> > On 6/13/06, Meghana wrote:
> > > Hi,
> > > I have a form in which the displayed input fields change based on a
> radio
> > > button field. When ever the field value is changed a corresponding
> > > valuechangelistener method is called and then the new set of input
> fields
> > > are displayed. But the values entered for those conditionally rendered
> > > fields are not retaining values in the backing bean. They are all null.
> > I've
> > > been banging my head over this for quite a while.
> > > Any ideas please!
> > >
> > > Thanks a lot,
> > > -M
> > >
> > >
> > > __________________________________________________
> > > Do You Yahoo!?
> > > Tired of spam? Yahoo! Mail has the best spam protection around
> > > http://mail.yahoo.com
> >
> >
> >
> >
> > __________________________________________________
> > Do You Yahoo!?
> > Tired of spam? Yahoo! Mail has the best spam protection around
> > http://mail.yahoo.com
>
>
>
>
>  __________________________________________________
> Do You Yahoo!?
> Tired of spam? Yahoo! Mail has the best spam protection around
> http://mail.yahoo.com

Reply via email to