Note that the below renderResponse() invocation will cause the LifecycleImpl to 
stop processing after the ValueChangeHandler is invoked because 
FacesContext.getRenderResponse() returns true, basically halting further 
processing [aka, no model update].  It sounds like this is not what you want to 
happen.


-----Original Message-----
From: Bruno Aranda [mailto:[EMAIL PROTECTED]
Sent: Tue 6/13/2006 4: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

<<winmail.dat>>

Reply via email to