Hello Reza: This is the way how i built our site http://www.dbgroups.com
1) An outer tabbed pane is a custom tabbedPane based on myfaces. It is custom since the renderer of components in each pane is complex.
2) An inner tabbed pane (not available for public yet, but it will be) in the display area is intended for either related resources from 1 unit and/or workflow that we can control the order of the selected tab. This inner tabbedPane is also a custom component based on a tabbedPane in JsfCore book.
We use 2 different approaches since in the prototype, we were able to make both work properly. I have not try both tabbedPanes from 1 approach. In our case, both outer and inner tabbedPanes must be custom, i guess it make no difference whether you use commandLink or commandButton for the tab.
Hope this may help.
BaTien DBGROUPS
Reza B'Far (Voice Genesis) wrote:
Hey Folks:
I've spent three days on this and would really appreciate some help. Basically, I can't get the MyJSF <x:pannelTabbedPane> to nest. I've tried all sorts of various combinations: including all the tabs in the same JSP page, taking some and putting them in different pages and trying to use includes, etc.
The one that gets me closest to a possible solution is putting everything on the same page as posted at the end of this message.
When I nest two tabbed panes, the state bean seems to be getting messed up. Snippet is at the bottom. I'm starting to conclude that I can't nest tabbed panes... if this is correct, I'm dead in the water because their entire application is a whole bunch of nested tabs controls. If this doesn't work, I'll have to use some other framework to get the nested tab functionality or build my own (both of which are VERY undesirable)
I use two different state beans and yet there is only one state... I've also tried using the same bean for everything, naturally, this is causing the outter tab system to work, but the inner doesn't work. Is this a known bug or am I doing something wrong?. Basically, I've tried all possible combinations to try to come up with a brute force solution since I've found no documentation on how to do this.
Thank you so very much in advance, Reza B'Far
JSF code with MyFaces: ----------------------- <f:view> <x:saveState id="ss1" value="#{tabbedControlCenterBean}" /> <f:loadBundle basename="org.apache.myfaces.examples.resource.example_messages" var="example_messages"/>
<x:panelLayout id="page" layout="#{globalOptions.pageLayout}" styleClass="pageLayout" headerClass="pageHeader" navigationClass="pageNavigation" bodyClass="pageBody" footerClass="pageFooter" >
<f:facet name="body">
<h:panelGroup id="body">
<x:messages id="messageList" showSummary="true" showDetail="true" summaryFormat="{0}:" />
<x:panelTabbedPane bgcolor="#FFFFCC" >
<x:panelTab id="tab6" label="Manage Your Web Site" rendered="#{tabbedControlCenterBean.tab6Visible}"> <f:subview id="tab6_1" rendered="#{tabbedControlCenterBean.tab6Visible}"> <x:saveState id="ss2" value="#{tabbedSetupBean}" /> <f:verbatim> <h:panelGroup id="NestedTabGroup"> <x:panelTabbedPane bgcolor="#FFFFCC"> <x:panelTab id="tab1" label="NestedTab1" rendered="#{tabbedSetupBean.tab1Visible}"> <f:subview rendered="#{tabbedSetupBean.tab1Visible}" id="tab1_1"> <f:verbatim> <jsp:include flush="true" page="test1.jsp"/> </f:verbatim> </f:subview> </x:panelTab >
<x:panelTab id="tab2" label="NestedTab2" rendered="#{tabbedSetupBean.tab2Visible}"> <f:subview rendered="#{tabbedSetupBean.tab2Visible}" id="tab2_1"> <f:verbatim> <jsp:include flush="true" page="test2.jsp"/> </f:verbatim> </f:subview> </x:panelTab >
<x:panelTab id="tab3" label="NestedTab3" rendered="#{tabbedSetupBean.tab3Visible}"> <f:subview rendered="#{tabbedSetupBean.tab3Visible}" id="tab3_1"> <f:verbatim> <jsp:include flush="true" page="test3.jsp"/> </f:verbatim> </f:subview> </x:panelTab > <x:panelTab id="tab4" label="NestedTab4" rendered="#{tabbedSetupBean.tab4Visible}"> <f:subview rendered="#{tabbedSetupBean.tab4Visible}" id="tab4_1"> <f:verbatim> <jsp:include flush="true" page="test4.jsp"/> </f:verbatim> </f:subview> </x:panelTab >
</x:panelTabbedPane> </h:panelGroup> </f:verbatim> </f:subview> </x:panelTab >
<x:panelTab id="tab5" label="AnotherHighLevelTab" rendered="#{tabbedControlCenterBean.tab5Visible}" />
</x:panelTabbedPane>
</h:panelGroup> </f:facet> </x:panelLayout> </f:view> ------------------- some of the resulted HTML source: .... </tr> </table><input type="hidden" name="jsf_tree_64" value="H4sIAAAAAAAAAJVSzW7TQBCeOE5JCwegwIUf5Ya4bJpKICQOtCoqjeQiRFqu7cTexots7 7I7bhwOlXgIDhx4A14CceAMR96Bd2A2jtIKJSAseTyene/bb77dz7+g5Sx0Yp0LVxbiBGPpREkqE wdWygHZMqbSyhsnt5/d+XDcCSCMoB2nKkusLAhuRm/wFLse0N22FieRcvQkgtU4Q+deYC4Jrtc9G RajLhOqYsQNK34ncgTrFxj20KX7aHg5UMlbOIOgMqxu3XfUouZ7VO9/3P34DT81odGH0Kl3sjIAE IxDjmvOg8EQdLUdCTQYp1Lkk3q6uHTkx8VT6QhJisP+gPOBzxnSdK43x28sx2c40SWJPcqzl1jIL Jr+s9xr53JnA7Uu/fzy9dbx9yYEu7CWaUx2MSZt+7BKqZUu1VlSmadb4J8r4zbHq/w2CMKhTia1m mlsLZhxc5FGnRtd8AmJlPUJWdVC96VzOJKOUZfzOvdm/m2DebXx76rxsV17uFkR3PdOVOJPSYd9v hh8DXZ0QagKaRmxQjh8dNRjUG+55dwzlIlht89tP8Ahw0MPvyDi3qz2kAkf/zch13zqOY5UssEcD xZPMjV3jnxudWnM7NAYFBr2l7+dZTa8VnL8Smsy5jfB2NmEiAMAAA=="/><input type="hidden" name="jsf_state_64" value="H4sIAAAAAAAAALVVzW8bRRR//kjsuECTtEKlbcBSqkhw2KRIQagVAtu1EyN/RLFJKRW44 92pvWG9M8zOOutGqegFDlyQgANSEBw4lhN/AEI9IFUqEpW4lAtCSAgJuPJ1gJlde71O1oHwMdLOz ozee/Pe7/3em5s/woTN4Njl0ibqIsVAZkupNjexys+/+fnz709bjxpRAIcCQNR+Ba6DHHF/lbQYz LiaNtcNZRVZ7TKiE4l7n9568MoXMYgWIGUQpBWQygkrwhRvM2y1iaE59OlnXBP3bSXFPC2+CIcz0 pajXEUqtpQt3ESUKrnn1tfzlXpjo5i/2FivVuvy8kmHUupf7rqdJcTAyLyTZq9+ufvbT1GIvAATX WTY2KERSyolgFIOqdV6udTIZmrFHIfTi7aFWUbr6OaiSkzOiJHDJsdM2bSk/elhcCWiIgNf/2Xmy u7Srz/EIF6EZFsErBINlyChEluo9zjMulAuSp8Wa5zpZut8CZJya6MWln7cL8S7iOnI5O7WoX+Iw QE4RLEpj446PsTRA1exQCrkKr4PVQia2pPpvnsf3d347vu57ZVBpkUiPOB8zYiAYiGYG5V0KDEFU sIG4nhVZBSzGupidun2x0+9tXunHIVoCaZUA1lWBXUGcacsIaO5OqNI9UnniAQtENZSEEVqGyudn ncfNpQN6VFWNzXhcrFDDQ4n57c5ajaxlgtmLitIsMMhZllnvVlenZTTFJXDDwpC8EwdAlkB08Mhf C1kcvl6o5Ip52sCtWNDAmUYQ72SbnHnxt25dz9D78UgUoS4pV/DHuxbcekBh3iTaD1nLwVOeFdOG qhHbB5IjVydltMjHE7Nb7cM0kRGlXKdmJZCBedKrobAJC53/d8QFQ4PhSDuKbkFM7Qx2K1iJPLN4 QG5qaCu3kLyOg5JeZAV7vcFC4SIlIzAHhEsPH45pOGc+OT32rcvf3Xbp+EQgD4m/6gABGbpsLZSL a9VK7KxFC/UXNXHpOFBDo50sGXJuEW+xO0NXVtyJDldP/q/IIQzwStWGLFHYg4r3Ul/ddRfJf5GO dNR56RYIejJqZBklj15i7oy/pTcM7n1IYM0hGGxGkq7p9tLO+f+2wqSxxf2gx8XZf2E91v2UJf4S 7GVYKRzIZHW3Yawhky874Eoiu7Qwmz2mw8+/PnG609GZfX1H4hBo3flKnanidlrN9+ZO/L2128M2 Ciac2K+IEYu58F0cHYPxdBRGPw+MClhaJwd1wmSDJuiCrE2phcsjG2PijS8oVt608A7fbil0otDd OX0rEuG42VkCu6kLxGbpS/iZrqm88DLEBLxYdMtmvTjXo7HxCoXJDRKOTEfKbkzgu3+/3lFR/w6O Qb92QH6Ncxt2n+UUp6f50TAUuza2KfpYM//jb/hOP4VW5ZH2bIslV4KY8tMXtO5x5U1Rq7qxpAq8 CfRtsjgbQoAAA=="/><input type="hidden" name="jsf_viewid" value="/userAdmin/controlCenter.jsp"/></form></span></span></td> </tr> </table><input type="hidden" name="jsf_tree_64" value="H4sIAAAAAAAAAJVSzW7TQBCeOE5JCwegwIUf5Ya4bJpKICQOtCoqjeQiRFqu7cTexots7 7I7bhwOlXgIDhx4A14CceAMR96Bd2A2jtIKJSAseTyene/bb77dz7+g5Sx0Yp0LVxbiBGPpREkqE wdWygHZMqbSyhsnt5/d+XDcCSCMoB2nKkusLAhuRm/wFLse0N22FieRcvQkgtU4Q+deYC4Jrtc9G RajLhOqYsQNK34ncgTrFxj20KX7aHg5UMlbOIOgMqxu3XfUouZ7VO9/3P34DT81odGH0Kl3sjIAE IxDjmvOg8EQdLUdCTQYp1Lkk3q6uHTkx8VT6QhJisP+gPOBzxnSdK43x28sx2c40SWJPcqzl1jIL Jr+s9xr53JnA7Uu/fzy9dbx9yYEu7CWaUx2MSZt+7BKqZUu1VlSmadb4J8r4zbHq/w2CMKhTia1m mlsLZhxc5FGnRtd8AmJlPUJWdVC96VzOJKOUZfzOvdm/m2DebXx76rxsV17uFkR3PdOVOJPSYd9v hh8DXZ0QagKaRmxQjh8dNRjUG+55dwzlIlht89tP8Ahw0MPvyDi3qz2kAkf/zch13zqOY5UssEcD xZPMjV3jnxudWnM7NAYFBr2l7+dZTa8VnL8Smsy5jfB2NmEiAMAAA=="/><input type="hidden" name="jsf_state_64" value="H4sIAAAAAAAAALVVzW8bRRR//kjsuECTtEKlbcBSqkhw2KRIQagVAtu1EyN/RLFJKRW44 92pvWG9M8zOOutGqegFDlyQgANSEBw4lhN/AEI9IFUqEpW4lAtCSAgJuPJ1gJlde71O1oHwMdLOz ozee/Pe7/3em5s/woTN4Njl0ibqIsVAZkupNjexys+/+fnz709bjxpRAIcCQNR+Ba6DHHF/lbQYz LiaNtcNZRVZ7TKiE4l7n9568MoXMYgWIGUQpBWQygkrwhRvM2y1iaE59OlnXBP3bSXFPC2+CIcz0 pajXEUqtpQt3ESUKrnn1tfzlXpjo5i/2FivVuvy8kmHUupf7rqdJcTAyLyTZq9+ufvbT1GIvAATX WTY2KERSyolgFIOqdV6udTIZmrFHIfTi7aFWUbr6OaiSkzOiJHDJsdM2bSk/elhcCWiIgNf/2Xmy u7Srz/EIF6EZFsErBINlyChEluo9zjMulAuSp8Wa5zpZut8CZJya6MWln7cL8S7iOnI5O7WoX+Iw QE4RLEpj446PsTRA1exQCrkKr4PVQia2pPpvnsf3d347vu57ZVBpkUiPOB8zYiAYiGYG5V0KDEFU sIG4nhVZBSzGupidun2x0+9tXunHIVoCaZUA1lWBXUGcacsIaO5OqNI9UnniAQtENZSEEVqGyudn ncfNpQN6VFWNzXhcrFDDQ4n57c5ajaxlgtmLitIsMMhZllnvVlenZTTFJXDDwpC8EwdAlkB08Mhf C1kcvl6o5Ip52sCtWNDAmUYQ72SbnHnxt25dz9D78UgUoS4pV/DHuxbcekBh3iTaD1nLwVOeFdOG qhHbB5IjVydltMjHE7Nb7cM0kRGlXKdmJZCBedKrobAJC53/d8QFQ4PhSDuKbkFM7Qx2K1iJPLN4 QG5qaCu3kLyOg5JeZAV7vcFC4SIlIzAHhEsPH45pOGc+OT32rcvf3Xbp+EQgD4m/6gABGbpsLZSL a9VK7KxFC/UXNXHpOFBDo50sGXJuEW+xO0NXVtyJDldP/q/IIQzwStWGLFHYg4r3Ul/ddRfJf5GO dNR56RYIejJqZBklj15i7oy/pTcM7n1IYM0hGGxGkq7p9tLO+f+2wqSxxf2gx8XZf2E91v2UJf4S 7GVYKRzIZHW3Yawhky874Eoiu7Qwmz2mw8+/PnG609GZfX1H4hBo3flKnanidlrN9+ZO/L2128M2 Ciac2K+IEYu58F0cHYPxdBRGPw+MClhaJwd1wmSDJuiCrE2phcsjG2PijS8oVt608A7fbil0otDd OX0rEuG42VkCu6kLxGbpS/iZrqm88DLEBLxYdMtmvTjXo7HxCoXJDRKOTEfKbkzgu3+/3lFR/w6O Qb92QH6Ncxt2n+UUp6f50TAUuza2KfpYM//jb/hOP4VW5ZH2bIslV4KY8tMXtO5x5U1Rq7qxpAq8 CfRtsjgbQoAAA=="/><input type="hidden" name="jsf_viewid" value="/userAdmin/controlCenter.jsp"/></form></span></td></tr></table>

