Here is my tabchangelistener.
public class TabSupport implements Serializable, TabChangeListener
{
private boolean portfolioSummaryTabSelected;
private boolean portfolioDetailTabSelected;
private boolean portfolioStatisticsTabSelected;
private int selectedTabIndex;
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 boolean getPortfolioDetailTabSelected() {
System.out.println(" Property getPortfolioDetailTabSelected() accessed " + portfolioDetailTabSelected);
return portfolioDetailTabSelected;
}
public void setPortfolioDetailTabSelected(boolean portfolioDetailTabSelected) {
System.out.println(" Property setPortfolioDetailTabSelected() accessed");
this.portfolioDetailTabSelected = portfolioDetailTabSelected;
}
public boolean getPortfolioStatisticsTabSelected() {
System.out.println(" Property getPortfolioStatisticsTabSelected() accessed " + portfolioStatisticsTabSelected);
return portfolioStatisticsTabSelected;
}
public void setPortfolioStatisticsTabSelected(
boolean portfolioStatisticsTabSelected) {
System.out.println(" Property setPortfolioStatisticsTabSelected() accessed");
this.portfolioStatisticsTabSelected = portfolioStatisticsTabSelected;
}
public boolean getPortfolioSummaryTabSelected() {
System.out.println(" Property getPortfolioSummaryTabSelected() accessed " + portfolioSummaryTabSelected);
return portfolioSummaryTabSelected;
}
public void setPortfolioSummaryTabSelected(boolean portfolioSummaryTabSelected) {
System.out.println(" Property setPortfolioSummaryTabSelected() accessed");
this.portfolioSummaryTabSelected = portfolioSummaryTabSelected;
}
public void processTabChange(TabChangeEvent event){
System.out.println("TabSupport:processTabChange() called " + event.getNewTabIndex
() + " " + event.getPhaseId());
selectedTabIndex = event.getNewTabIndex();
switch(selectedTabIndex){
case 0:
System.out.println("Setting tabs now case 0" );
portfolioSummaryTabSelected = true;
portfolioDetailTabSelected=false;
portfolioStatisticsTabSelected=false;
break;
case 1:
System.out.println("Setting tabs now case 1" );
portfolioDetailTabSelected = true;
portfolioSummaryTabSelected = false;
portfolioStatisticsTabSelected=false;
break;
case 2:
System.out.println("Setting tabs now case 2" );
portfolioDetailTabSelected = false;
portfolioSummaryTabSelected = false;
portfolioStatisticsTabSelected = true;
break;
}
tabStatus();
}
private void tabStatus()
{
System.out.println("Tab Status is ");
System.out.println(" portfolioSummaryTabSelected is " + portfolioSummaryTabSelected);
System.out.println(" portfolioDetailTabSelected is " + portfolioDetailTabSelected);
System.out.println(" portfolioStatisticsTabSelected is " + portfolioStatisticsTabSelected);
}
}
The flow is that whenever one of the tabs is clicked my tabchangelistener sets the corresponding boolean attribute for that tab to true and others as false. As a result the desired behaviour is when the page is reloaded the selected tab f:subview tag is rendered and other f:subview tags should not. But somehow on every tab change the properties returned are always false (the default value) and the change of properties in processTabChange function are not considered or are overwritten. I dont know why this is happening. Can anybody give some ideas.
Hassnain

