Found a workaround for this issue (and a fairly obvious one at that!)
The answer was passing value-binding expressions (pointing to labels)
instead of the actual labels, when building the collection of
NavigationMenuItems.
This is the only way that I could get a usage such as
<t:panelNavigation2 id="nav1" layout="list" activeItemClass="selected">
<t:navigationMenuItems value="#{menu.panelNavigationItems}" />
</t:panelNavigation2>
to reliably update its labels on each request. This deviates from the
behaviour of similar collection-referencing tags, such as dataTable and
f:selectItems, which grab the collection anew every time.
Cheers,
Jeff Bischoff
Kenneth L Kurz & Assoc, Inc.
Jeff Bischoff wrote:
Problem:
Menu labels are not updated on t:panelNavigation2 when the action
returns null, and the same page is redisplayed. If we navigate to
another page and then navigate back, the labels are updated correctly.
How can we get t:panelNavigation2 to update itself without navigating to
a different page?
I thought perhaps binding it to a UIComponent might allow me to
programmatically force such an update, but I'm not sure what methods
might accomplish that.
Background:
We have recently added t:panelNavigation2 as a menu to our website. At
the end of the label for each menu item is a number representing the
number of records in that category. When a new number is input and the
load button is clicked, these values should change, but they do not. All
of the other components on the page (h:inputTexts, h:outputTexts,
t:inputCalendar, etc) do update their displayed values correctly. We are
only having a problem with t:panelNavigation2 in particular.
Jeff Bischoff
Kenneth L Kurz & Associates, Inc.