FYI, I did get this working using binding and using the IDs of the children to programmatically set the disclosed properties. I just dislike using binding as I feel it too tightly couples the backing bean code with the view structure, so if anyone can think of a better solution, I'd be glad to hear it.
On 8/15/07, Andrew Robinson <[EMAIL PROTECTED]> wrote: > I am having issues combining the state of a tab panel with backing > bean managed selected tab. I want to be able to change the selected > tab from outside the tabbed pane. The problem I am running into is > that the tabbed pane sets the local value of the disclosed attribute > when the user clicks a tab. Once that is set, my EL expressions are no > longer used. > > Example: > > <tr:commandLink id="aLink" value="A"> > <t:updateActionListener property="#{bean.tab}" value="A" /> > </tr:commandLink> > <tr:commandLink id="bLink" value="B"> > <t:updateActionListener property="#{bean.tab}" value="B" /> > </tr:commandLink> > > <tr:panelTabbed id="mytabs"> > <tr:showDetailItem disclosed="#{bean.tab eq 'A'}" > disclosureListener="#{bean.tabASelected}"> > A > </tr:showDetailItem> > <tr:showDetailItem disclosed="#{bean.tab eq 'B'}" > disclosureListener="#{bean.tabBSelected}"> > B > </tr:showDetailItem> > </tr:panelTabbed> > > public class Bean { > private String tab = "A"; > public String getTab() { return this.tab; } > public void setTab(String tab) { this.tab = tab; } > public void tabASelected(DisclosureEvent evt) { > if (evt.isExpanded) { this.tab = "A"; } > } > public void tabBSelected(DisclosureEvent evt) { > if (evt.isExpanded) { this.tab = "B"; } > } > } > > Is there a way, without extending tr:showDetailItem to prevent the > tabbed panel from programmatically setting the disclosed property of > the tab, and letting my code using the disclosureListener properties > handle the selection? > > Thanks, > Andrew >