O TabView do primefaces volta para a primeira aba em algumas situacoes (quando ele está dentro de um <a4j:outputPanel ajaxRendered="true"> e dentro de um tab tem um rich:datatable e um botão é pressionado no datascroller (nossa, é difícil, mas aconteceu comigo)).
Para resolver isso, simplesmente tire o tabView do outputPanel.
Caso isso não possa ser feito, na troca de aba deve ser setado o 'activeIndex' do tabView. Da seguinte forma:
No tabView deve ser adicionado o tabChangeListener e o activeIndex. E as tabs devem ter seu id setado:
<p:tabView tabChangeListener="#{myBean.onTabChange}" activeIndex="#{myBean.currentTab}">
<p:tab title="primeria aba" id="tab0">
</tab>
<p:tab title="segunda aba" id="tab1">
</tab>
<p:tab title="terceira aba" id="tab2">
</tab>
</p:tabView>
No Bean adicione isso:
private int currentTab = 0;
public int getCurrentTab() {
return currentTab;
}
public void setCurrentTab(int currentTab) {
this.currentTab = currentTab;
}
public void onTabChange(org.primefaces.event.TabChangeEvent event) {
String id = event.getTab().getId();
if (id.equals("tab0")) {
this.setCurrentTab(0);
} else if (id.equals("tab1")) {
this.setCurrentTab(1);
} else if (id.equals("tab2")) {
this.setCurrentTab(2);
}
}
Acredito que isso não funciona no primefaces 2.1.. aqui no 2.2.1 funcionou..
É isso, vaaleu. Abraço.
Procurei muito na net e encontrei em seu blog... Parabéns e obrigado por compartilhar conhecimento
ResponderExcluirtb uso 2.2.1 e essa solução funcionou.
ResponderExcluirMas no 3 não funcionou de jeito algum...
no 3 não cheguei a testar.. aqui no meu projeto uso o 2.2.1.. teria que dar mais um pesquisada, se encontrar a solução compartilhe aqui por gentileza..
ResponderExcluirAbraço
Adriano Schmidt
Bom... o poste tem um bom tempinho já, mas para ficar registrado, caso alguém tenha esse problema com a nova versão do primefaces (3.4) deve fazer o seguinte...
ResponderExcluirNão existe mais o "tabChangeListener" como propriedade da tabView... Deve-se usar um p:ajax, para ouvir o evento...
Exemplo:
//Outros campos da tab
No resto, é tudo igual...
Tinha postado o código, mas ele foi excluído.. =/
ResponderExcluiracho q o blogspot se perde quando eh postado algo aqui com os sinais de maior e menor...
ResponderExcluirolá... to tentando fazer o mesmo no primefaces 3.4.2 e não tá rolando... tem alguma idéia???
ResponderExcluirAdriano, bom dia.
ResponderExcluirEstava com um problema com tabview, em uma chamada recursiva para uma tela com 3 tabs, onde apenas uma fica ativa todo o tempo, as outras duas possuem o element rendered e são exibidas apenas em momentos específicos.
Acontece que quando eu mudava para uma tab que não a principal e avançava, a tab que deveria ser exibida fica oculta.
Estava desde ontem cedo tentando resolver, mas não encontrava uma solução. Hoje, assim que cheguei ao trabalho me deparei com seu post e veio na medida certa.
Obrigado pelo post (quase cinco anos depois).