public class TabSupport implements Serializable, TabChangeListener
{
private static final long serialVersionUID = 1L;
int selectedTabIndex;
public TabSupport()
{
}
public int getSelectedTabIndex() {
//System.out.println(" Property getSelectedTabIndex() accessed " + selectedTabIndex);
return selectedTabIndex;
}
public void setSelectedTabIndex(int selectedTabIndex) {
//System.out.println(" Property setSelectedTabIndex() accessed");
this.selectedTabIndex = selectedTabIndex;
}
public void processTabChange(TabChangeEvent event){
System.out.println("TabSupport:processTabChange() called " + event.getNewTabIndex() + " " + event.getPhaseId());
this.selectedTabIndex
= event.getNewTabIndex();
}
}
When I change the tab the listener is invoked which sets selectedTabIndex value accordingly and I can see this through the system message. But in the generated html the selected tab content doesnt show meaning selectedTabIndex is still 0. It hasnt been assigned to the new value or has been overwritten. TabSupport is in the session scope. Following is my jsp code
<!
DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><%@
page contentType="text/html;charset=UTF-8" language="java" %><%@
taglib prefix="c" uri ="http://java.sun.com/jstl/core" %><%@
taglib prefix="f" uri ="http://java.sun.com/jsf/core" %><%@
taglib prefix="h" uri ="http://java.sun.com/jsf/html" %><%@
taglib uri="http://myfaces.apache.org/tomahawk " prefix="t"%>
<
f:view> <f:loadBundle basename="com.prytania.resource.Messages " var="messages"/> <html> <head> <title><h:outputText value="#{messages['title']}"/></ title> <t:stylesheet path="/report.css" /> </head> <body> <h:form id="portfolioFatherForm" > <f:subview id="header" > <jsp:include page="inc/page_header.jsp" /> </f:subview> <f:verbatim> <br/> </f:verbatim> <t:panelTabbedPane selectedIndex="#{tabSupport.selectedTabIndex}" styleClass="tabbedPane" width="100%" bgcolor="#FFFFCC" activeTabStyleClass="activeTab" inactiveTabStyleClass="inactiveTab" activeSubStyleClass="activeSub" inactiveSubStyleClass="inactiveSub" tabContentStyleClass="tabContent" serverSideTabSwitch="true" > <t:panelTab label=" #{messages['portfolio_summary']}" > <f:subview id="tabportfoliosummary" rendered="#{(tabSupport.selectedTabIndex==0)}" > <jsp:include page="portfoliosummary.jsp " /> </f:subview> </t:panelTab> <t:panelTab label=" #{messages['portfolio_detail']}"> <f:subview id="tabportfoliodetail" rendered="#{(tabSupport.selectedTabIndex==1)}" > <jsp:include page="portfoliodetail.jsp " /> </f:subview> </t:panelTab> <t:panelTab label=" #{messages['portfolio_statistics']}"> <f:subview id="tabportfoliostatistics" rendered="#{(tabSupport.selectedTabIndex==2)}" > <jsp:include page="portfoliostatistics.jsp " /> </f:subview> </t:panelTab> <t:tabChangeListener type="com.prytania.listeners.TabSupport " /> </t:panelTabbedPane> <f:subview id="footer" > <jsp:include page="inc/page_footer.jsp" /> </f:subview> </h:form> </body> <html></
f:view>
I shall be highly obliged with any responses.
Hassnain

