[richfaces-issues] [JBoss JIRA] (RF-11750) onter() on nested tab

Jean ANDRE (JIRA) jira-events at lists.jboss.org
Fri Jan 20 10:18:19 EST 2012


     [ https://issues.jboss.org/browse/RF-11750?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Jean ANDRE updated RF-11750:
----------------------------

    Summary: onter() on nested tab  (was: onter() with nested tab)

    
> onter() on nested tab
> ---------------------
>
>                 Key: RF-11750
>                 URL: https://issues.jboss.org/browse/RF-11750
>             Project: RichFaces
>          Issue Type: Bug
>      Security Level: Public(Everyone can see) 
>    Affects Versions: 4.1.0.CR1
>         Environment: Websphere 8 - RAD 8 - JSF Mojorra 2.1.4 - Spring 3.0.6 Final - Use @Inject @Named @SessionScoped as annotations - Firefox 7.0.1 - Windows 7 (6.1 sp1) - AspectJ 1.6.12 / AJDT 
>            Reporter: Jean ANDRE
>             Fix For: 4.Future
>
>         Attachments: screenshot-1.jpg, screenshot-2.jpg, screenshot-3.jpg
>
>
> We put onenter() on tabs, because the actionlistener does not work very well on the first click. Some tabs are static while other are dynamically constructed. Tabs are created after a search and a new tab is created with a list of items. When a user click on item list, the content of the tab is refreshed to display detailed information. These information are displayed also inside 6 static tabs.
> The problems comes when we click/select these static tabs. Selecting theses tabs, trigger the onter() of the parent tab even if we stay all the time on the parent tab....
> We do not known if this behavior is normal or not.
> The following code is the dynamic tab construction - Note the onenter()
> {code}
>   <rich:tabPanel id="desktopTabPanel" switchType="ajax" headerPosition="top" activeItem="#{desktopTabController.activeTab}">
>     <rich:tab id="tab-workitems" name="tab-workitems" header="#{msg['desktop.tab.workitems']}" onenter="enterTab('#{tab.id}')">
>       <!--                -->
>       <!--  WORKITEMS TAB -->
>       <!--                -->
>     </rich:tab>
>     <rich:tab id="tab-search" name="tab-search" header="#{msg['desktop.tab.search']}" onenter="enterTab('#{tab.id}')">
>       <!--                -->
>       <!--  SEARCH TAB    -->
>       <!--                -->
>       <a4j:outputPanel id="toggleSearchOutput">
>     <!--                 -->
>     <!--  TOGGLE SEARCH  -->
>     <!--                 -->
>     <a4j:commandButton id="toggleCommandSearch"
>                     value="#{msg[desktopTabController.toggleSearchLabel]}"
>            actionListener="#{desktopTabController.doToggleSearch}"
>                    render="toggleSearchOutput"
>                 immediate="true">
>     </a4j:commandButton>
>     <br />
>     <br />
>     <!--                   -->
>     <!--  SEARCH CLIENT    -->
>     <!--                   -->
>     <ui:include src="client/searchClient.xhtml" />
>     <!--                   -->
>     <!--  SEARCH WORKITEMS -->
>     <!--                   -->
>     <ui:include src="workitems/searchWorkItems.xhtml" />
>       </a4j:outputPanel>
>     </rich:tab>
>     <c:forEach items="#{desktopTabController.desktopTabBean.tabElements}" var="tab">
>       <rich:tab id="#{tab.id}" name="#{tab.id}" actionListener="#{desktopTabController.doTabListener}" onenter="enterTab('#{tab.id}')">
>     <!--                -->
>     <!--  DYNAMIC TABS  -->
>     <!--                -->
>     <f:facet name="header">
>        <h:panelGrid id="tab-header-#{tab.id}" columns="2" title="#{desktopTabController.getTabHeader(tab.id)}">
>         <h:outputText value="#{desktopTabController.getAdjustedTabHeader(tab.id)}" />
>         <h:commandButton image="/images/closeButton.png"
>                     styleClass="closeButton"
>                         action="#{desktopTabController.doCloseTab(tab.id)}" />
>       </h:panelGrid>
>     </f:facet>
>     <ui:fragment rendered="#{tab.isTabClient}">
>       <!--               -->
>       <!--  CLIENT TAB   -->
>       <!--               -->
>       <ui:include src="client/listClient.xhtml" />
>     </ui:fragment>
>     <ui:fragment rendered="#{tab.isTabWorkItems}">
>       <!--               -->
>       <!-- WORKITEMS TAB -->
>       <!--               -->
>       <ui:include src="workItems/listWorkItems.xhtml" />
>     </ui:fragment>
>       </rich:tab>
>     </c:forEach>
>   </rich:tabPanel>
> </h:form>
> {code}
> The onenter function definition. This function set only the selectedTab variable in the backing bean
> {code}
> <a4j:jsFunction id="enterTab" name="enterTab" action="#{desktopTabController.doEnterTab}" render="menu-opened-tabs">
> <a4j:param name="tabId" assignTo="#{desktopTabController.activeTab}" />
> </a4j:jsFunction>
> {code}
> The onenter function inside the backing-bean
> {code}
>   public String doEnterTab() {
>     // we just need to set the activeTab because actionListener is not working
>     // for the first click - Bug has been reported by other users.
>    return OUTCOME_DESKTOP;
> }
> {code}
> The following code is the nested tabs - Those tabs appears when the use click on the item from a list.
> {code}
> 	<rich:tabPanel switchType="client" headerPosition="top">
> 		<rich:tab  header="#{msg['client.tab.summary']}">
> 			<!--             -->
> 			<!--  SUMMARY    -->
> 			<!--             -->
> 			<ui:include src="summaryClient.xhtml" />		
> 		</rich:tab>
> 		<rich:tab  header="#{msg['client.tab.info']}">
> 			<!--             -->
> 			<!--  INFO.      -->
> 			<!--             -->
> 			<ui:include src="infoClient.xhtml" />		
> 		</rich:tab>
> 		<rich:tab  header="#{msg['client.tab.products']}">
> 			<!--             -->
> 			<!--  PRODUCTS   -->
> 			<!--             -->
> 		
> 		</rich:tab>
> 		<rich:tab  header="#{msg['client.tab.phone.address']}">
> 			<!--                      -->
> 			<!--  PHONES & ADDRESSES  -->
> 			<!--                      -->
> 		
> 		</rich:tab>
> 		<rich:tab  header="#{msg['client.tab.history']}">
> 			<!--             -->
> 			<!--  HISTORY    -->
> 			<!--             -->
> 		
> 		</rich:tab>
> 		<rich:tab  header="#{msg['client.tab.workitems']}">
> 			<!--              -->
> 			<!--  WORK ITEMS  -->
> 			<!--              -->
> 		
> 		</rich:tab>
> 	</rich:tabPanel>
> {code}
> Then, each time we click on these nested tabs, the parent tab call the onenter().
> See the screen capture for better understanding of the scenario.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.jboss.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        


More information about the richfaces-issues mailing list