Thanks Volker, for the reply!

The SelectOneListBox with the facet, is within the rendered panel
(orderPanel which encloses both this selectListOneBox component, as well as
the 'orderDetailPanel').  Hence, I expected the value of SelectOneListBox,
to be processed. And, it's not.

I will  try with the other two options....

Appreciate it!

tx,
-R



*<tc:panel id="orderPanel">
....
...
<tc:box label="#{rsrcBundle.order_orderListLabel}">
        <f:facet name="layout">
            <tc:gridLayout rows="*" columns="*" margin="2px" />
        </f:facet>
        <tc:selectOneListbox value="#{orderPanelController.order}"
        valueChangeListener="#{orderPanelController.showInDetail}"
        validator="#{orderPanelController.validateListSelection}">
            <f:selectItems value="#{orderPanelController.orders}" />
            <f:converter converterId="deviceOrderId" />

            <f:facet name="click">
                <tc:command action="#{orderPanelController.returnNull}">
                    <tc:attribute value=":cdbmainpage:orderPanel"
                        name="renderedPartially" />
                </tc:command>
            </f:facet>
<%-- I tired the same command with 'change' facet' also %>
        </tc:selectOneListbox>

    </tc:box>

<tc:panel id="orderDetailPanel">*

On Thu, Feb 21, 2008 at 3:22 AM, Volker Weber <[EMAIL PROTECTED]> wrote:

> Hi Raj,
>
> if i interpret your code snippet correct,
>
> the selectOneListbox with the click/change facet is NOT inside the
> partially rendered panel. This is the problem, only the content of the
> partiallyRendered component is processed on the server.
>
> you have two(tree) choices:
> 1. include the listbox into the renderedPartially scope.
> 2. invoke the processing of listbox lifecycle in your action.
>    UIComponent listbox = facesContext.getViewRoot().findComponent(<id
> of listbox>);
>    listbox.processDecodes(facesContect);
>    listbox.processValidations(facesContect);
>    listbox.processUpdates(facesContect);
>
> 3.(experimental) use 1.1-SNAPSHOT version.
>  you can declare full page to be submitted (and processed) partially and
>  in your action method remove the page and add orderPanel from/to the
> partially
>  component list.
>
>
> Regards,
>    Volker
>
> 2008/2/21, Raj .G. Narasimhan <[EMAIL PROTECTED]>:
> > I am trying to show the details of 'SelectItem' object of
> SelectOneListBox
> > on a set of Input fields. Problem that I am facing is, whenever the page
> is
> > rendered partially, it always returns the 'value' of SelectOneListBox as
> > null.  I have tried using both 'change' and 'click' facets, and both of
> them
> > are not giving the desired results.
> >
> > Here's the scenario, in little detail:
> >
> > When I use, 'click' facet, and tried to select different list items:
> >
> > ** In the valueChangeEvent, everytime it's retaining the initially set
> value
> > (First item of List box, which I set when I render the panel for the
> first
> > time) .
> >
> > ** getValue() of the source component in the valueChange event, is
> > supposedly returning the binding value, if the current value is null.
> And, I
> > guess, this is the reason, it retains the old value, if the current
> > localvalue is null.
> >
> > ** After this listerner call, it tries to set the value of the
> > SelectOneListBox's bound value as null, and this results in NPException,
> as
> > the 'DetailPanel's fields are this object's properties.
> >
> >  ** I tried intercepting with a Validator - Surprisingly, this is not
> called
> > at all...
> >
> >
> > When I use "Change" facet and tried to select different list items:
> > ** ValueChangeEvent does not occur at all
> >  **Agreeably, 'change' facet's command is also not called
> > **No validator call is made
> >
> > Here's the code snippet:
> > <tc:panel id="orderPanel">
> > ....
> > ...
> > <tc:box label="#{rsrcBundle.order_orderListLabel}">
> >          <f:facet name="layout">
> >             <tc:gridLayout rows="*" columns="*" margin="2px" />
> >         </f:facet>
> >         <tc:selectOneListbox value="#{orderPanelController.order}"
> >
> > valueChangeListener="#{orderPanelController.showInDetail}"
> >
> > validator="#{orderPanelController.validateListSelection}">
> >             <f:selectItems value="#{orderPanelController.orders}" />
> >              <f:converter converterId="deviceOrderId" />
> >
> >             <f:facet name="click">
> >                 <tc:command action="#{orderPanelController.returnNull}">
> >                      <tc:attribute value=":cdbmainpage:orderPanel"
> >                         name="renderedPartially" />
> >                 </tc:command>
> >             </f:facet>
> >  <%-- I tired the same command with 'change' facet' also %>
> >         </tc:selectOneListbox>
> >
> >     </tc:box>
> >
> > <tc:panel id="orderDetailPanel">
> > ....
> > ..
> >
> > OrderPanelController:
> > public void showInDetail(ValueChangeEvent valChangeEvent) {
> >         UISelectOne select =
> > (UISelectOne)valChangeEvent.getComponent();
> >         if(select.getValue() == null){
> >             LOG.finer("Value is null");
> >              return;
> >         }
> >         order = (DeviceOrder) select.getValue();
> >         LOG.finer("Selected Order: "+select.getValue());
> >         return;
> >     }
> >
> > public void validateListSelection(FacesContext context,
> > UIComponent component, Object value) throws ValidatorException {
> >          if (value == null) {
> >             System.out.println("List validation:Came here : Value is
> null");
> >             return;
> >         }
> >         order = (DeviceOrder) value;
> >         LOG.finer("Selected order in validation: "+order);
> >      }
> >
> > Appreciate your help!
> >
> > --
> > Thanks,
> >
> > Raj .G. Narasimhan
>
>
> --
> inexso - information exchange solutions GmbH
> Bismarckstraße 13      | 26122 Oldenburg
> Tel.: +49 441 4082 356 |
> FAX:  +49 441 4082 355 | www.inexso.de
>



-- 
Thanks,

Raj .G. Narasimhan

Reply via email to