Hi Madhav,

if the action method, which is invoked in invokeApplication phase (between
step 2 and 3) returns a value != null
a new component tree is created.
If you want to reuse the previously rendered component tree your action
should return null, or if you just want to reuse the
custom component instance add a binding attribute.

regards,
   Volker

2006/12/26, Madhav Bhargava <[EMAIL PROTECTED]>:


 Hi All,

I have developed a custom component. This component has only one
HtmlPanelNavigationMenu component which constructs dynamically depending on
the current role and some other factors.

The Panel is constructed properly and changes properly on role changes.
However there is a strange behavior. Let me explain:

HtmlPanelNavigationMenu is composed of HtmlCommandNavigationItem
components. Take the following example:

For those not able to see the image here is the menu:

HOME

MESSAGE CENTER

  >> Messages

  >> Reminders

.... and it continues



The parent is *Message Center* and once clicked it expands into Message
and Reminder sub menu.

Following happens when *Message Center *is clicked:

1. Calls the constructor for the custom component

2. Calls restoreState  - at the end of this call all the children list for
this custom component is available.

3. Calls encodeBegin, encodeChildren and encodeEnd methods.

At the end the left Nav is expanded and is rendered properly.



*However when Message link is clicked then the following happens:*

   1. Enters the constructor of the custom component
   2. Enters restoreState method
   3. Again enters the constructor of the same custom component instead
   of invoking the encodeBegin
   4. Does not enter restoreState but now it enters encodeBegin

 As it is clear from Step 3 and 4 that when it enters encodeBegin it does
not have any children because it does not call restoreState the second time.
The end result is that the page for Message is displayed but the left
navigation menu vanishes completely.

 Can anyone point out what is going wrong here?

Any help will be appreciated.

 Thanks and Rgds,

Madhav

--
When I tell the truth, it is not for the sake of convincing those who do
not know it, but for the sake of defending those that do

Reply via email to